繁体   English   中英

基于python中键的值的2个字典列表中的2元组列表

[英]List of 2-tuples from 2 lists of dictionaries based on value of keys in python

我有两个字典lxly列表。 lx元素包含感兴趣的键key1ly元素包含key2 我想创建一个2元组(a,b)的列表,其中alx的字典, bly的字典,这样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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM