Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按值分组字典,返回键和值列表对_Python - Fatal编程技术网

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

Python 按值分组字典,返回键和值列表对,python,Python,考虑一个具有多个重复值的字典。如何按值对词典进行分组?例如: mydict = { 'germany': 'europe', 'france': 'europe', 'canada': 'north america', 'latvia': 'europe' 'usa': 'north america', 'china': 'asia' } 按值分组到列表中 groupdDict = { 'europe': ['germany','f

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

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']
}

使用
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']}
或者使用简单的迭代

演示:

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']}
输出:

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']}