繁体   English   中英

从 {key1: [value1, value2...]} 到 {value1: [key1, key2...]} 的有效方法

[英]Efficient way to get from {key1: [value1, value2...]} to {value1: [key1, key2...]}

假设我有一本这样的字典:

animals_dict = 
{'cat': ['black', 'white', 'orange'],
'dog': ['black', 'white'],
'parrot': ['orange', 'green']}

我想得到这个:

colors_dict = 
{'black': ['cat', 'dog'],
'white': ['cat', 'dog'],
'orange': ['cat', 'parrot'],
'green': ['parrot']}

显而易见的方法是循环遍历animals_dict中的每一个动物; 循环通过它的每一种颜色; 并将动物添加到 colors_dict 中的该颜色。 但是,如果你有数千万只动物,而每只动物最多可以有一百种颜色,那么这将在计算上变得昂贵。 有没有更有效的方法来实现这一目标?

index = {'cat': ['black', 'white', 'orange'],'dog': ['black', 'white'],'parrot': ['orange', 'green']}

new_dic = {}
for k,v in index.items():
    for x in v:
        new_dic.setdefault(x,[]).append(k)
print(new_dic)

这给

{
    'black': ['cat', 'dog'], 
    'white': ['cat', 'dog'], 
    'orange': ['cat', 'parrot'], 
    'green': ['parrot']
}

pythonic方式来反转一个值是列表的字典? / 如何在 Python 中反转字典(其值是列表)?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM