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