python - 无法使用Python中的字典转换替换列表中的值

标签 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]}
        ]

我试图用基于字典(转换)的值替换 cat id,我尝试了下面的代码

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

print(result)

这给了我键“66和27”的Keyerror,我怎样才能得到“特斯拉和奥迪”的结果。对于 key “66 & 27 & 29”,它应该给出“Tesla & Audi & BMW”。

我不知道如何处理这种情况。对于实现这一结果的方法有什么建议吗?

最佳答案

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

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

conversions.get(x, x) 返回 conversions[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]}]

关于python - 无法使用Python中的字典转换替换列表中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34292771/

相关文章:

python - 如何在 django 中编写带有过滤器和按条件排序的连接三个表的查询

python - 未找到 libtorrent 模块

python - 递归总是更新字典

python - "import pkg.module"是否相当于 2.7 中 pkg/__init.py__ 中的 "import module"而不是 3.5 中的 0x104567910?

python - PyQt5无法在Qlabel中居中对齐文本

python - Gunicorn 创建了多少应用程序实例

python - 如何量化 Theano 脚本中复制到 GPU 的数据量?

python - 如何从 Azure ADLS Gen 1 在 Azure 机器学习工作室中注册特定版本的增量表?

python - 使用 pdfminer.six 从 URL 打开 PDF

Python安装设置工具出现语法错误