问题描述
我有以下值的字典,它由航空公司代码及其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'}
>>>
现在什么,我其实是想解决的是通过在PEQ“PERROR”右侧的IC代码(左侧)与值进行比较,以更新PEQ字典提到PERROR。
抱歉,如果我不清楚,但总而言之,我想用ic
字典中提到的右侧值更新peq
字典中提到的perror
所有值,但首先需要比较一下代码是否存在于peq
并且如果确实这样做,则使用ic
值更新其perror
( peq
字典)。
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'}}