gpt4 book ai didi

python - 迭代两个列表;然后比较/追加数组中的结果

转载 作者:太空宇宙 更新时间:2023-11-03 14:46:37 24 4
gpt4 key购买 nike

我有两个列表。

一个字典列表。另一个列表,但带有纯字符串(我解析它以便提取字典匹配键)

例如:

词典列表如下所示:

list1 = [{'name':'foo', 'age':'12'},{'name':'bar','age':'12'},{'name':'alex','age':13}]

然后我有第二个列表看起来像这样

filters_list = ['name=foo', 'age=12']

我想遍历第一个列表;然后创建一个空列表,然后附加每个匹配项。

在这种情况下;

我会得到所有名字 'foo' 和年龄 '13' 所以这会从第一个列表 aka list1 中返回 2 项

这是我目前的尝试

            for items in list1: # main array of dictionaries

for filters in filters_list: #second array with payloat formatted string.
keys = filters.split('=')[0]
values = filters.split('=')[-1]
if str(values.strip()) == str(items[keys].replace('$','')):

outputArr.append(items)
return outputArr

这不能正常工作。

最佳答案

>>> arr = [{'name':'foo', 'age':'12'},{'name':'bar','age':'12'},{'name':'alex','age':13}]
>>> filters_arr = ['name=foo', 'age=12']
>>> filters_tuples = [f.split('=') for f in filters_arr]
>>> [item for item in arr if any(item[k] == v for k, v in filters_tuples)]
[{'name': 'foo', 'age': '12'}, {'name': 'bar', 'age': '12'}]

或者如果你想匹配所有过滤器那么:

>>> [item for item in arr if all(item[k] == v for k, v in filters_tuples)]
[{'name': 'foo', 'age': '12'}]

关于python - 迭代两个列表;然后比较/追加数组中的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48718680/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com