python - 比较列表和字典

标签 python list dictionary compare

所以,我想检查列表 A 和字典 B 是否有一些共同的单词。然后我想检查常用单词(键)的值的总和是否高于 10。我希望能够以简单的方式做到这一点。

示例(无法正常工作):

A = ['a','b','c','e']
B = {'a': 12, 'b': 8, 'c':3,'d':15}

TheSum = 0
for key,value in B.items():
    if key in A:
        TheSum += int(value)
        if TheSum > 10:
            print ("The sum of the values are higher than 10 and the words incommon are:")
            print (key,"=", value,"points")
        else:
            print ("Nothing in common")

我想要打印:

值的总和大于 10,常见的单词是:

a = 12 分

b = 8 分

c = 3 分

我希望我的问题是可以理解的。我认为所有的 for 和 if 语句都太困惑了。

最佳答案

我会使用set,然后使用生成器表达式。可能更容易展示。首先我们得到共同的元素:

>>> A = ['a','b','c','e']
>>> B = {'a': 12, 'b': 8, 'c':3,'d':15}
>>> set(A).intersection(B)
set(['a', 'c', 'b'])

然后我们可以计算与这些键关联的 B 值的总和:

>>> common = set(A).intersection(B)
>>> sum(B[k] for k in common)
23

如果大于 10,则打印一些内容。

现在,您正在循环 B 中的每个键、值对(好的),然后检查该键是否在 A 中(这可以工作,但会很慢,因为为了测试 a 中的成员资格)如果键在 A 中,则需要累加 TheSum。这部分确实有效。

但是您在累积和 > 10 之后打印每个键/值对,我认为这不是您想要的。

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

相关文章:

python - PERL-like autovivification with default value in Python, and returns a default value from non-existing arbitrary nesting?

python - 如何在普罗米修斯中创建自定义指标?

Python:检测python工具的安装位置

python - PyMySQL 不是从 Cron 连接,而是从控制台连接

python - 如何在Python中调整二维矩阵的大小以适应图像上的像素化​​效果

MySQL - 将员工链接到发票#

python - 如何提取带有三个正斜杠的字符串?

c# - 如何在 C# 中修改具有公共(public)父类(super class)的对象列表的成员?

java - 将 map 拆分为两个列表

c++ - 将元素数量不断变化的 map 导出为 CSV