python-3.x - 我可以根据字典的键创建输出吗?
问题描述
我有看起来像这样的字典:'a': 'NPRO,206', 'b': 'PREP,131', 'c': 'PRCL,120', 'd': 'NPRO,66'
等等。我想创建如下所示的输出:NPRO:'a,d', PRCL:'c', PREP:'b'
解决方案
首先,您必须获取所有值,例如NPRO, PRCL
,请注意它们不止一次出现。因此,如果您不删除重复的值,您最终可能会两次将相同的值添加到键中。
您可以使用set()
, set 就像数学中的集合一样。您不能有重复的值。即使我把1,2,3,3,1
它放在最后它看起来像1,2,3
做这样的事情:
d = {'a': 'NPRO,206', 'b': 'PREP,131', 'c': 'PRCL,120', 'd': 'NPRO,66'}
new_dict = {}
for k in set(val.split(',')[0] for val in d.values()):
for key, value in d.items():
if k in value:
try:
new_dict[k].append(key)
except KeyError as err:
new_dict[k] = [key]
print(new_dict)
这应该打印:
{'NPRO': ['a', 'd'], 'PRCL': ['c'], 'PREP': ['b']}
笔记:
这段代码可以改进,但正如你所说你是新人,我让事情变得简单。
推荐阅读
- react-native - 使 react-native 组件以固定时间间隔闪烁
- cuda - CUDA。无法将网格与 maxGridSizes 一起使用
- sql - 带有光标的 SQL Server 存储过程导致错误
- excel - 如何在vba中使用插入工作表名称的动态变量
- scala.js - 在对象或类中表示 js.Dynamic
- machine-learning - caffe CNN:忽略损失层中的多个标签
- reactjs - 对树视图做出反应的所有选项是什么
- meteor - 在大气包中使用 babel 功能
- php - 单击活动按钮时如何更改颜色 php jquery
- ios - 触摸文本文件在 iOS swift 中单击它后面的按钮