不能';t在Python中使用dict转换替换列表中的值

不能';t在Python中使用dict转换替换列表中的值,python,python-3.x,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,

我有下面的字典清单-

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和27”的钥匙错误,我怎样才能得到“特斯拉和奥迪”的结果。对于键“66、27和29”,应给出“特斯拉、奥迪和宝马”


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

按单个空格拆分
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]}]

将键
'66&27'
添加到您的转换指令中。我认为您没有明确定义使用该键应该发生什么。在问题中,我使用了原始数据。。但是这些值将来自数据库表。。我不能用“66和27”作为键。。我需要以某种方式解析字符串,并用“特斯拉”替换66,用“奥迪”替换27……太棒了!非常感谢。