按值,返回键和值列表对分组字典

时间:2018-05-21 17:00:02

标签: python

考虑具有多个重复值的字典。如何按值对字典进行分组?例如:

mydict = 
{
    'germany': 'europe', 
    'france': 'europe',
    'canada': 'north america', 
    'latvia': 'europe'
    'usa': 'north america',
    'china': 'asia'
}

按值分组到列表中。

groupdDict =
{
    'europe': ['germany','france','latvia'],
    'north america': ['canada','usa'],
    'asia': ['china']
}

1 个答案:

答案 0 :(得分:2)

使用collections.defaultdict

<强>演示:

mydict ={
        'germany': 'europe',
        'france': 'europe',
        'canada': 'north america',
        'latvia': 'europe',
        'usa': 'north america',
        'china': 'asia'
    }

import collections
d = collections.defaultdict(list)
for k,v in mydict.items():
    d[v].append(k)
print(d)

或使用简单的迭代

<强>演示:

d = {}
for k,v in mydict.items():
    if v not in d:
        d[v] = []
    d[v].append(k)
print(d)

<强>输出:

{'north america': ['canada', 'usa'], 'europe': ['france', 'latvia', 'germany'], 'asia': ['china']}