Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python2.7中连接键/值对上的两个字典列表_Python_Python 2.7_Dictionary - Fatal编程技术网

在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
循环插入到我现有的函数中?是的,请记住返回列表。