首页 > 解决方案 > 我可以根据字典的键创建输出吗?

问题描述

我有看起来像这样的字典:'a': 'NPRO,206', 'b': 'PREP,131', 'c': 'PRCL,120', 'd': 'NPRO,66'等等。我想创建如下所示的输出:NPRO:'a,d', PRCL:'c', PREP:'b'

标签: python-3.x

解决方案


首先,您必须获取所有值,例如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']}

笔记:

这段代码可以改进,但正如你所说你是新人,我让事情变得简单。


推荐阅读