如何查找和附加列表中存在的字典值
我有一个具有唯一排序值的列表
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 版更改: 字典顺序保证是插入顺序。此行为是 3.6 中 CPython 的实现细节。