我有一個值的字典,給出了列表中值的出現次數。我怎樣才能返回一個新的詞典,基於該值將前一個詞典分成單獨的詞典?如何根據鍵的出現次數對字典進行「排序」?
換句話說,我想解決這詞典:
>>> a = {'A':2, 'B':3, 'C':4, 'D':2, 'E':3}
這一個。
b = {2: {'A', 'D'}, 3: {'B', 'E'}, 4: {'C'}}
如何解決問題?
我有一個值的字典,給出了列表中值的出現次數。我怎樣才能返回一個新的詞典,基於該值將前一個詞典分成單獨的詞典?如何根據鍵的出現次數對字典進行「排序」?
換句話說,我想解決這詞典:
>>> a = {'A':2, 'B':3, 'C':4, 'D':2, 'E':3}
這一個。
b = {2: {'A', 'D'}, 3: {'B', 'E'}, 4: {'C'}}
如何解決問題?
from collections import defaultdict
a = {'A': 2, 'B': 3, 'C': 4, 'D': 2, 'E': 3}
b = defaultdict(set)
for k, v in a.items():
b[v].add(k)
這是你會得到什麼:
defaultdict(<class 'set'>, {2: {'D', 'A'}, 3: {'B', 'E'}, 4: {'C'}})
您可以b = dict(b)
轉換b
正常字典之後。
,如果你是像我這樣的蟒蛇初學者,你可能想嘗試這個
A = { 'A' 2, 'B':3, 'C':4, 'd':2' E」:3}
b = {}
爲鍵在:
lst = []
new_key = a[key]
if new_key not in b:
lst.append(key)
b[new_key] = lst
else:
b[new_key].append(key)
打印(b)
它採用p的可變屬性ython字典來實現你想要的結果。
沒有必要明確地將其轉換爲'dict'。它表現得像普通字典:) –
@MoinuddinQuadri不一定。作爲一個例子,試圖訪問一個缺失的關鍵字會在defaultdict中添加一個條目,所以如果你以後檢查該關鍵字是否在字典中,你就會得到'True',這可能不是你想要的。 – fenceop