簡體   English   中英

如何查找列表中存在的 append 字典值

[英]How to find and append dictionary values which are present in a list

我有一個具有唯一排序值的列表

arr = ['Adam', 'Ben', 'Chris', 'Dean', 'Flower']

我有一本字典,其中包含這樣的值

dict = {
  'abc': {'Dean': 1, 'Adam':0, 'Chris':1},
  'def': {'Flower':0, 'Ben':1, 'Dean':0}
}

通過查看 arr 中的值,我需要擁有每個項目,並且如果該值不存在於后續較小的 dict 中,則應該分配一個值 -1

結果

dict = {
  'abc': {'Adam':0, 'Ben':-1, 'Chris':1, 'Dean': 1, 'Flower':-1},
  'def': {'Adam':-1, 'Ben':1, 'Chris':-1, 'Dean': 0, 'Flower':0}
}

如何使用 python 中的列表和字典理解來實現這一點

dd = {
    key: {k: value.get(k, -1) for k in arr}
    for key, value in dd.items()
}

{k: value.get(k, -1) for k in arr}將確保您的密鑰與您在arr列表中定義的順序相同。


關於字典中鍵順序的旁注。

字典保留插入順序。 請注意,更新密鑰不會影響順序。 刪除后添加的鍵插入到最后。

在 3.7 版更改: 字典順序保證為插入順序。 這種行為是 CPython 3.6 的實現細節。

請不要創建一個名為dict的變量,將其重命名為dct或其他名稱,因為dict它是一個保留的 python 內部。 至於您的問題:只需遍歷您的dct並使用setdefault添加缺少的鍵:

arr = ['Adam', 'Ben', 'Chris', 'Dean', 'Flower']


dct = {
  'abc': {'Dean': 1, 'Adam':0, 'Chris':1},
  'def': {'Flower':0, 'Ben':1, 'Dean':0}
}

def add_dict_keys(dct, arr):
    for key in arr:
        dct.setdefault(key, -1)
    return dct

for k, v in dct.items():
    add_dict_keys(v, arr)

print(dct)  # has updated values

暫無
暫無

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

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