在Python2.7中连接键/值对上的两个字典列表
我有两本字典的目录。如何基于两者中通用的键/值来连接它们 数据列表:在Python2.7中连接键/值对上的两个字典列表,python,python-2.7,dictionary,Python,Python 2.7,Dictionary,我有两本字典的目录。如何基于两者中通用的键/值来连接它们 数据列表: [{'app': u'568', 'browser_version': u'0', 'cost': u'9.4547e-08', 'device': u'iPad', 'device_brand': u'Apple', 'device_family': u'iPad', 'device_os': u'iOS', 'device_os_version': u'11.3', 'end_time':
[{'app': u'568',
'browser_version': u'0',
'cost': u'9.4547e-08',
'device': u'iPad',
'device_brand': u'Apple',
'device_family': u'iPad',
'device_os': u'iOS',
'device_os_version': u'11.3',
'end_time': u'2018-05-03',
'key': '1',
'latency': 0.435227,
'megacycles': 370.0,
'ua_parse': u'40.10.7'},
{'app': u'571',
'browser_version': u'66.0.3359',
'cost': u'1.3075e-08',
'device': u'0',
'device_brand': u'0',
'device_family': u'Other',
'device_os': u'Mac OS X',
'device_os_version': u'10.12.6',
'end_time': u'2018-05-07',
'key': '2',
'latency': 0.191712,
'megacycles': 146.0,
'ua_parse': u'5.0'}]
[{u'key': [u'1'], u'predictions': [0.044329315423965454]},
{u'key': [u'2'], u'predictions': [-0.17194432020187378]}]
和更新数据列表:
[{'app': u'568',
'browser_version': u'0',
'cost': u'9.4547e-08',
'device': u'iPad',
'device_brand': u'Apple',
'device_family': u'iPad',
'device_os': u'iOS',
'device_os_version': u'11.3',
'end_time': u'2018-05-03',
'key': '1',
'latency': 0.435227,
'megacycles': 370.0,
'ua_parse': u'40.10.7'},
{'app': u'571',
'browser_version': u'66.0.3359',
'cost': u'1.3075e-08',
'device': u'0',
'device_brand': u'0',
'device_family': u'Other',
'device_os': u'Mac OS X',
'device_os_version': u'10.12.6',
'end_time': u'2018-05-07',
'key': '2',
'latency': 0.191712,
'megacycles': 146.0,
'ua_parse': u'5.0'}]
[{u'key': [u'1'], u'predictions': [0.044329315423965454]},
{u'key': [u'2'], u'predictions': [-0.17194432020187378]}]
我想在'key'
上连接。我已经尝试了这个代码
它打印了一系列字典,如下所示:
[{u'predictions': [0.044329315423965454], u'key': [u'1']},
{u'predictions': [-0.17194432020187378], u'key': [u'2']},
{'megacycles': 370.0,
'latency': 0.435227,
'app': u'568',
'device_os_version': u'11.3',
'ua_parse': u'40.10.7',
'device_family': u'iPad',
'browser_version': u'0',
'cost': u'9.4547e-08',
'device_brand': u'Apple',
'end_time': u'2018-05-03',
'key': '1',
'device': u'iPad',
'device_os': u'iOS'},
{'megacycles': 146.0,
'latency': 0.191712,
'app': u'571',
'device_os_version': u'10.12.6',
'ua_parse': u'5.0',
'device_family': u'Other',
'browser_version': u'66.0.3359',
'cost': u'1.3075e-08',
'device_brand': u'0',
'end_time': u'2018-05-07',
'key': '2',
'device': u'0',
'device_os': u'Mac OS X'}]
我想要的是这样一个列表,其中预测被附加到数据列表中,数据列表由键匹配(因此键:'1'==u'key':[u'1']
)
我查看了代码,两个dict“数据列表”和“ret\u数据列表”在dict中有“key”,但值不同。“ret_data_list”包含“key”,但有一个列表作为其值(u'key':[u'1'])。您需要在“ret_data_list”中更改该值的类型,并使其(u'key':'1')
在两个dict中的“key”值相同后,代码片段将正常运行
您可以尝试使用此代码更改“ret_data_list”中的“key”值:-
假设您有列表lst1
和lst2
,则可以在嵌套的for
循环中进行迭代。这是低效的,但本质上是操纵字典列表
for item1 in lst1:
for item2 in lst2:
if item1['key'] == item2[u'key'][0]:
item1['predictions'] = item2[u'predictions'][0]
唯一的额外复杂性是需要在lst2
字典中提取列表值的唯一元素
for item1 in lst1:
for item2 in lst2:
if item1['key'] == item2[u'key'][0]:
item1['predictions'] = item2[u'predictions'][0]
[u'1']
无法与'1'
(列表与字符串)相比。您能发布所需结果是什么样的吗?@Eliethesaiyan我已用所需结果更新了问题。谢谢谢谢这解决了问题。我是否可以将这个for
循环插入到我现有的函数中?是的,请记住返回列表。