簡體   English   中英

Append 在 python 字典理解中列出

[英]Append to list in python dict comprehension

假設我們有一個字典inp = {"virat":60,"rohit":50,"sardhul":50,"rana":60}我們應該得到 output 為{60: ['virat', 'rana'], 50: ['rohit', 'sardhul']}

我可以在正常的 python 編程中做到這一點,如下所示

    out = dict()
    for key, val in inp.items():
        if val not in out:
            out[val] = [key]
        else:
            out[val].append(key)

output 是{60: ['virat', 'rana'], 50: ['rohit', 'sardhul']}

我們如何在字典理解中做同樣的事情?

一種更復雜的方法:

out = {}
for key, val in inp.items():
    out.setdefault(val, []).append(key)

正如其他人所提到的,它效率不高,但如果你必須有一個理解:

{ val: [ key for key,vv in inp.items() if vv == val ] for val in inp.values() }

這基本上相當於:

out = dict()
for val in inp.value():
    tmp = list()
    for key,vv in inp.items():
        if vv == val:
            tmp.append(key)
    out[val] = tmp

...這比您的原始代碼效率低得多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM