所以,我想检查列表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,而incommon是:
a = 12分
b = 8分
c = 3分
我希望我的问题是可以理解的。我认为所有的for-和if-statments都太乱了。
答案 0 :(得分:4)
我会使用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中,您然后累积TheSum。那部分确实有效。
但是,在累积总和为>之后,您将打印每个键/值对。 10,我不认为你是在追求什么。
答案 1 :(得分:1)
测试B
中A
中的值与if sum(B[k] for k in A if k in B):
print("sum higher than 10")
else:
print("sum lower than 10")
中的值的总和是否大于10:
A
如果您想要一个B
元素列表,这些元素是[k for k in A if k in B]
中的键,那么您可以从{{1}}获取它。