我有下面的词典列表 -
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”。
我不确定如何处理这种情况。有关实现此结果的方法的任何建议吗?
答案 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]}]