如何查找和附加列表中存在的字典值

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

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 的实现细节。


以上是如何查找和附加列表中存在的字典值的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>