我有一个包含以下值的词典,其中包含航空公司代码及其 perror 号码。
peq = {
'sg':{'code':9, 'perror':0},
'6e':{'code':17, 'perror':0},
'g8':{'code':25, 'perror':0},
'i7':{'code':33, 'perror':0},
'9h':{'code':41, 'perror':0},
'it':{'code':49, 'perror':0},
'ic':{'code':57, 'perror':0},
'9w':{'code':65, 'perror':0},
's2':{'code':73, 'perror':0},
'ai':{'code':81, 'perror':0}
}
我有一个变量如下所示。 perrors 包含错误代码, acode 是航空公司代码,类似于上面 peq 字典
中提到的代码perrors = ['0', '281', '2', '16', '0', '0', '2', '0', '0', '1']
acode = [41, 65, 17, 81, 73, 57, 9, 49, 33, 25]
然后我在字典
中压缩了上面的两个列表>>> ic = dict(zip(acode,perrors))
>>> ic
{65: '281', 25: '1', 49: '0', 81: '16', 41: '0', 17: '2', 9: '2', 73: '0', 57: '0', 33: '0'}
>>>
现在我要解决的是通过比较ic代码(左侧)和右侧的值来更新 peq 字典中提到的 perror 在peq“perror”中。
很抱歉,如果我不清楚,但简而言之,我想更新perror
词典中提到的peq
的所有值,并使用ic
中提到的右侧值字典,但首先它需要比较代码是否存在于peq
中,如果确实存在,则更新其perror
(peq
字典)ic
值。
答案 0 :(得分:1)
您需要迭代dict
并使用压缩list
中的正确密钥:
import pprint
peq = {
'sg':{'code':9, 'perror':0},
'6e':{'code':17, 'perror':0},
'g8':{'code':25, 'perror':0},
'i7':{'code':33, 'perror':0},
'9h':{'code':41, 'perror':0},
'it':{'code':49, 'perror':0},
'ic':{'code':57, 'perror':0},
'9w':{'code':65, 'perror':0},
's2':{'code':73, 'perror':0},
'ai':{'code':81, 'perror':0}
}
perrors = ['0', '281', '2', '16', '0', '0', '2', '0', '0', '1']
acode = [41, 65, 17, 81, 73, 57, 9, 49, 33, 25]
ic = dict(zip(acode,perrors))
for k, v in peq.items():
try:
v['perror'] = ic[v['code']]
except KeyError:
print 'failed to find code {} at ic zip'.format(v['code'])
pprint.pprint(peq)
输出:
{'6e': {'code': 17, 'perror': '2'},
'9h': {'code': 41, 'perror': '0'},
'9w': {'code': 65, 'perror': '281'},
'ai': {'code': 81, 'perror': '16'},
'g8': {'code': 25, 'perror': '1'},
'i7': {'code': 33, 'perror': '0'},
'ic': {'code': 57, 'perror': '0'},
'it': {'code': 49, 'perror': '0'},
's2': {'code': 73, 'perror': '0'},
'sg': {'code': 9, 'perror': '2'}}