无法使用Python中的dict转换替换列表中的值

时间:2015-12-15 15:14:40

标签: python python-3.x

我有下面的词典列表 -

result=[{'cat': '66', 'count': 5, 'ids': [20, 21, 22, 23, 24]},
        {'cat': '27', 'count': 4, 'ids': [20, 22, 23, 24]},
        {'cat': '29', 'count': 2, 'ids': [20, 24]},
        {'cat': '66 & 27', 'count': 4, 'ids': [20, 22, 23, 24]},
        {'cat': '66 & 27 & 29', 'count': 2, 'ids': [20, 24]}
        ]

我试图用基于dict(转换)的值替换cat id,我试过下面的代码

conversions ={'66':'Tesla','27':'Audi','29':'BMW'}
for do in result:
    do['cat']=conversions[do['cat']]

print(result)

这给了我关键'66&的Keyerror。 27',我怎样才能得到'特斯拉&奥迪”。对于'66& 27& 29'应该给'特斯拉&奥迪& BMW”。

我不确定如何处理这种情况。有关实现此结果的方法的任何建议吗?

1 个答案:

答案 0 :(得分:1)

按单个空格拆分do['cat'],处理结果列表的每个元素,并使用单个空格作为分隔符连接结果。

for do in result:
    do['cat'] = ' '.join([conversions.get(x, x) for x in do['cat'].split(' ')])
如果conversions.get(x, x)可兑换,则

conversions[x]会返回x,否则会返回x

对于您的数据,此方法将生成

[{'cat': 'Tesla', 'count': 5, 'ids': [20, 21, 22, 23, 24]},
 {'cat': 'Audi', 'count': 4, 'ids': [20, 22, 23, 24]},
 {'cat': 'BMW', 'count': 2, 'ids': [20, 24]},
 {'cat': 'Tesla & Audi', 'count': 4, 'ids': [20, 22, 23, 24]},
 {'cat': 'Tesla & Audi & BMW', 'count': 2, 'ids': [20, 24]}]