使用两个字典数组优化python中的循环

2024-06-26 01:39:03 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python3.7中,我有两个字典数组,需要使用公共键将它们连接起来

array_1 = [
    {'address1': 'KR 10 B # 14 - 03', 'id': 6605, 'commune1': 'COMUNA 2'}, 
    {'address1': 'KR 90 # 2 OESTE - 17', 'id': 9565, 'commune1': 'COMUNA 18'}, 
    {'address1': 'CL 72 J # 5 NORTE - 70', 'id': 8493, 'commune1': 'COMUNA 6'}, 
    {'address1': 'PAISAJES DEL CASTILLO CS 29', 'id': 10330, 'commune1': ''}
]

array_2 = [
    {'coddirplaca': 'A', 'id': 9565}, 
    {'coddirplaca': 'B','id': 6605}, 
    {'coddirplaca': 'C','id': 10330}, 
    {'coddirplaca': 'D','id': 8493}
]

所以,我需要一个这样的数组:

array_3 = [
        {'address1': 'KR 10 B # 14 - 03', 'id': 6605, 'commune1': 'COMUNA 2', 'coddirplaca': 'B'}, 
        {'address1': 'KR 90 # 2 OESTE - 17', 'id': 9565, 'commune1': 'COMUNA 18', 'coddirplaca': 'A'}, 
        {'address1': 'CL 72 J # 5 NORTE - 70', 'id': 8493, 'commune1': 'COMUNA 6', 'coddirplaca': 'D'}, 
        {'address1': 'PAISAJES DEL CASTILLO CS 29', 'id': 10330, 'commune1': '', 'coddirplaca': 'C'}
    ]

我有这段代码,它将来自array_1的一个字典与来自array_2的所有列表进行比较,并且运行良好,但是这修改了我的原始数组_1:

for dict_1 in array_1:
    for index in range(len(array_2)):
        dict_2 = array_2[index]
        if dict_1['id'] == dict_2['id']:
            dict_1['coddirplaca'] = dict_2['coddirplaca'] # I create a new key/value in each dict_2
print(array_1)

如何优化此循环

注意:始终,array_1array_2具有相同的长度


Tags: inid字典cl数组arraydictkr
1条回答
网友
1楼 · 发布于 2024-06-26 01:39:03
array_1 = [
    {'address1': 'KR 10 B # 14 - 03', 'id': 6605, 'commune1': 'COMUNA 2'},
    {'address1': 'KR 90 # 2 OESTE - 17', 'id': 9565, 'commune1': 'COMUNA 18'},
    {'address1': 'CL 72 J # 5 NORTE - 70', 'id': 8493, 'commune1': 'COMUNA 6'},
    {'address1': 'PAISAJES DEL CASTILLO CS 29', 'id': 10330, 'commune1': ''}
]

array_2 = [
    {'coddirplaca': 'A', 'id': 9565},
    {'coddirplaca': 'B','id': 6605},
    {'coddirplaca': 'C','id': 10330},
    {'coddirplaca': 'D','id': 8493}
]

array_3 = {d['id']: d for d in array_1}
for d in array_2:
    array_3[d['id']].update(d)

from pprint import pprint
pprint(list(array_3.values()))

印刷品:

[{'address1': 'KR 10 B # 14 - 03',
  'coddirplaca': 'B',
  'commune1': 'COMUNA 2',
  'id': 6605},
 {'address1': 'KR 90 # 2 OESTE - 17',
  'coddirplaca': 'A',
  'commune1': 'COMUNA 18',
  'id': 9565},
 {'address1': 'CL 72 J # 5 NORTE - 70',
  'coddirplaca': 'D',
  'commune1': 'COMUNA 6',
  'id': 8493},
 {'address1': 'PAISAJES DEL CASTILLO CS 29',
  'coddirplaca': 'C',
  'commune1': '',
  'id': 10330}]

相关问题 更多 >