簡體   English   中英

比較字典與列表的鍵

[英]Compare keys of dictionary with list

我有一個數字列表(比方說,A)。 例如:

A = [ 0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7]

列表A的許多元素具有與它們相關聯的列表,並且我以字典的形式存儲該結果。 此字典的鍵始終是屬於列表A的元素。例如,

D = {0.5: [1, 2], 0.7: [1, 1], 0.3: [7, 4, 4], 0.6: [5]}

在此示例中的元素0.5,0.7,0.30.6具有連接與他們的列表和這些元素作為字典中的D.鍵

對於一個沒有連接與他們列出的元素( 0.1,0.2,0.3),我想將它們連接到字典d(並指派空列表給他們),並創建一個新的字典,D_new。 例如,

D_new = {0.1: [], 0.2: [], 0.4: [], 0.5: [1, 2], 0.7: [1, 1], 
          0.3: [7, 4, 4], 0.6: [5]}

使用dict-comprehension,迭代A值,使用D.get()D查找它們,默認為[]

D_new = { x: D.get(x, []) for x in A }

您也可以從D創建一個defaultdict

from collections import defaultdict
D_new = defaultdict(list, D)

# the key in D returns corresponding value
D_new[0.5]
# [1, 2]

# the key not in D returns empty list
D_new[0.2]
# []

你可以使用dict.setdefault

D = {0.5: [1, 2], 0.7: [1, 1], 0.3: [7, 4, 4], 0.6: [5]}
A = [ 0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7]

for a in A:
    _ = D.setdefault(a, [])
    #                   ^ add's empty list as value if `key` not found

最終價值:

>>> D
{0.5: [1, 2], 0.1: [], 0.2: [], 0.3: [7, 4, 4], 0.6: [5], 0.4: [], 0.7: [1, 1]}

注意:它不是創建新的dict ,而是修改現有的dict。

暫無
暫無

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

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