与Python中的词典列表相关

与Python中的词典列表相关,python,list,dictionary,join,correlation,Python,List,Dictionary,Join,Correlation,我有两个包含字典的列表: List1 = [{"Value": "Value1", "Start": 7.11, "End": 8}, {"Value": "Value2", "Start": 16.45, "End": 20}] List2 = [{"From":7.11, "To": 8, "Result": 0}, {"From":16.45, "To": 20 "Result": 1} ] 我需要通过关联这些列表来生成一个列表。所以

我有两个包含字典的列表:

List1 = [{"Value": "Value1", "Start": 7.11, "End": 8},
         {"Value": "Value2", "Start": 16.45, "End": 20}]

List2 = [{"From":7.11, "To": 8, "Result": 0},
         {"From":16.45, "To": 20 "Result": 1}
        ]
我需要通过关联这些列表来生成一个列表。所以结果将会是

Result = [{"Value": "Value1", "Start": 7.11, "End": 8, Result: 0},
         {"Value": "Value2", "Start": 16.45, "End": 20,Result: 1}]
这几乎像是SQL中的简单表联接

我将如何在Python中实现它


谢谢

您可以使用嵌套字典:

List1 = [{"Value": "Value1", "Start": 7.11, "End": 8},
 {"Value": "Value2", "Start": 16.45, "End": 20}]

List2 = [{"From":7.11, "To": 8, "Result": 0},
 {"From":16.45, "To": 20, "Result": 1}
]

new_list = [{**a, **{'Result':b['Result']}} for a, b in zip(List1, List2)]
输出:

[{'Value': 'Value1', 'Start': 7.11, 'End': 8, 'Result': 0}, {'Value': 'Value2', 'Start': 16.45, 'End': 20, 'Result': 1}]
[{'Start': 7.11, 'End': 8, 'Result': 0, 'Value': 'Value1'}, {'Start': 16.45, 'End': 20, 'Result': 1, 'Value': 'Value2'}]
由于字典解包(
**
)仅是Python3中的一项功能,因此您可以在Python2中使用
dict.items

new_list = [dict(a.items()+[('Result', b['Result'])]) for a, b in zip(List1, List2)]
输出:

[{'Value': 'Value1', 'Start': 7.11, 'End': 8, 'Result': 0}, {'Value': 'Value2', 'Start': 16.45, 'End': 20, 'Result': 1}]
[{'Start': 7.11, 'End': 8, 'Result': 0, 'Value': 'Value1'}, {'Start': 16.45, 'End': 20, 'Result': 1, 'Value': 'Value2'}]

他们保证会以这种方式分类?真的!我是Python新手。你能解释一下代码的作用吗?多谢各位@leon为了在每个列表的元素之间创建一个配对,在列表理解中使用了
zip
。在Python3的第一个版本中,第一个经过删减的字典被解包到新字典中,并且只添加第二个删减的结果值。在第二个示例中,通过创建嵌套列表,然后应用
dict
,可以避免解包。抱歉,还有一个后续问题。如何进行关联?换句话说,列表1中开始键和结束键的值与相同键的相同值匹配,因此添加了正确的结果键/值。@leon
zip
是对应元素之间的配对。看见