当前位置: 代码迷 >> python >> 比较两个列表中的值并将其更新到字典中
  详细解决方案

比较两个列表中的值并将其更新到字典中

热度:125   发布时间:2023-06-13 13:33:22.0

我有以下值的字典,它由航空公司代码及其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值更新其perrorpeq字典)。

您需要迭代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'}}
  相关解决方案