python - 在 Python 中比较字典

标签 python dictionary

给定两个字典,d1d2 , 和一个整数 l , 我想找到所有键 kd1这样d2[k]<lk not in l .我想输出d2中的键和对应的值, 除非 d2不包含 key ,我想打印 0。例如,如果 d1

a: 1
b: 1
c: 1
d: 1

d2

a: 90
b: 89
x: 45
d: 90

l是 90,输出将是(可能以不同的顺序)

b 89
c 0

在 Python 中执行此操作的最佳方法是什么?我刚刚开始学习这门语言,到目前为止,这是我所拥有的:

for k in d1.keys():
    if k not in d2:
        print k, 0
    else:
        if d2[k]<l:
            print k, d2[k]

这当然有效(除非我有打字错误),但在我看来,会有一种更 pythonic 的方式来做到这一点。

最佳答案

你的实际上很好——你可以将它简化为

for k in d1:
    if d2.get(k, 0) < l:
       print k, d2.get(k, 0)

这(对我来说)是 pythonic,并且几乎是对您的描述代码的直接“翻译”。

如果你想避免重复查找,你可以这样做

for k in d1:
    val = d2.get(k, 0)
    if val < l:
        print k, val

关于python - 在 Python 中比较字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/434353/

相关文章:

python - 我如何在多线程应用程序中将 GIL 用于字典?

python - 从我的本地环境调用 stripe charge API 时出现 TLS 问题

Python Web 应用程序设置

python - django bootstrap 4 导航栏切换按钮在本地主机上不起作用

arrays - swift 3 : Array to Dictionary?

c++ - 如何先按值对 std::map 排序,然后按键排序?

java - 我如何总结两个 map 中的值并使用 Guava 返回值

C++ STL :map search by iterator to another map

python - pytest.mark.parametrize 中的 indirect = True/False 是什么意思?

python - UDP 缓冲区,它们在哪里,有什么保证?