[英]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.