gpt4 book ai didi

python - 获取列表中的字典,其中键为 :value pairs are in another list of dictionaries

转载 作者:行者123 更新时间:2023-11-28 20:40:31 25 4
gpt4 key购买 nike

我有两个字典列表,例如

L1 = [
{'ID': '1', 'file': 'test1', 'ext': 'txt'},
{'ID': '2', 'file': 'test2', 'ext': 'txt'},
{'ID': '3', 'file': 'test3', 'ext': 'py'}
]

L2 = [
{'file': 'test1', 'ext': 'txt', 'val': '5'},
{'file': 'test3', 'ext': 'py', 'val': '7'},
{'file': 'test4', 'ext': 'py', 'val': '8'}
]

我想从 L1 中提取所有字典,其中 'file''ext' 的键值对可以在L2 的字典。

在我们的例子中

L = [
{'ID': '1', 'ext': 'txt', 'file': 'test1'},
{'ID': '3', 'ext': 'py', 'file': 'test3'}
]

有没有聪明的 pythonic 方法来做到这一点?

最佳答案

您可以使用以下列表理解:

L1 = [
{'ID':'1','file':'test1','ext':'txt'},
{'ID':'2','file':'test2','ext':'txt'},
{'ID':'3','file':'test3','ext':'py'}
]

L2 = [
{'file':'test1','ext':'txt','val':'5'},
{'file':'test3','ext':'py','val':'7'},
{'file':'test4','ext':'py','val':'8'}
]


L = [d1 for d1 in L1 if any(
d2.get('file') == d1['file'] and d2.get('ext') == d1['ext'] for d2 in L2)]
print(L)

输出

[{'ID': '1', 'ext': 'txt', 'file': 'test1'},
{'ID': '3', 'ext': 'py', 'file': 'test3'}]

这会遍历每个字典 d1L1 , 并且对于每一个测试 d1['file'] 的键值对是否都是和 d1['ext']存在于 L2 中的任何词典中.

关于python - 获取列表中的字典,其中键为 :value pairs are in another list of dictionaries,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35682157/

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