在Dicts中按相同的值查找所有关键元素

Sno*_*llz 10 python dictionary key

我对Python中的字典有疑问.

这里是:

我有一个像这样的字典 dict = { 'abc':'a', 'cdf':'b', 'gh':'a', 'fh':'g', 'hfz':'g' }

现在我希望以相同的值获取所有Key-Elements并将其保存在新的dict中.

新的Dict应该是这样的:

new_dict = { 'b':('cdf'), 'a':('abc','gh'), 'g':('fh','hfz')}

Sve*_*ach 22

如果您在新词典中使用列表而不是元组,则可以使用

from collections import defaultdict
some_dict = { 'abc':'a', 'cdf':'b', 'gh':'a', 'fh':'g', 'hfz':'g' }
new_dict = defaultdict(list)
for k, v in some_dict.iteritems():
    new_dict[v].append(k)
Run Code Online (Sandbox Code Playgroud)

如果你想避免使用defaultdict,你也可以这样做

new_dict = {}
for k, v in some_dict.iteritems():
    new_dict.setdefault(v, []).append(k)
Run Code Online (Sandbox Code Playgroud)


Ada*_*ear 5

这是一个幼稚的实现。拥有更好 Python 技能的人可能会使它更简洁和更棒。

dict = { 'abc':'a', 'cdf':'b', 'gh':'a', 'fh':'g', 'hfz':'g' }

new_dict = {}
for pair in dict.items():
    if pair[1] not in new_dict.keys():
        new_dict[pair[1]] = []

    new_dict[pair[1]].append(pair[0])

print new_dict
Run Code Online (Sandbox Code Playgroud)

这产生

{'a': ['abc', 'gh'], 'b': ['cdf'], 'g': ['fh', 'hfz']}
Run Code Online (Sandbox Code Playgroud)