簡體   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