[英]List of 2-tuples from 2 lists of dictionaries based on value of keys in python
我有两个字典lx
和ly
列表。 lx
元素包含感兴趣的键key1
, ly
元素包含key2
。 我想创建一个2元组(a,b)的列表,其中a
是lx
的字典, b
是ly
的字典,这样a['key1'] == b['key2']
。 有没有一种方法可以直接通过列表理解来做到这一点?
我失败的尝试是:
out = [(a,b) for a in lx for b in ly and a['key1'] == b['key2']]
但我收到“分配前引用的局部变量b”错误。
更新:
输入示例为:
lx = [{'key1': 'a', 'xyz': 1},
{'key1': 'b', 'xyz': 2},
{'key1': 'c', 'xyz': 3}]
ly = [{'key2': 'a', 'abc': '66'},
{'key2': 'c', 'abc': '01'}]
输出:
out = [({'key1': 'a', 'xyz': 1}, {'key2': 'a', 'abc': '66'}),
({'key1': 'c', 'xyz': 3}, {'key2': 'c', 'abc': '01'})]
您需要在条件之前使用if
来代替and
:
>>> lx = [{'key1': 'foo'}, {'key1': 'foobar'}]
>>> ly = [{'key2': 'foo'}, {'key2': 'bar'}]
>>> [(a,b) for a in lx for b in ly and a['key1'] == b['key2']]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <listcomp>
UnboundLocalError: local variable 'b' referenced before assignment
>>> [(a,b) for a in lx for b in ly if a['key1'] == b['key2']]
[({'key1': 'foo'}, {'key2': 'foo'})]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.