用str和int在字典中选择 - Python

时间:2017-05-16 22:14:21

标签: python dictionary for-loop if-statement typeerror

我一直试图做的是总结“字典”的价值。我得到的错误是' str'对象不可调用

根据我对Stack Overflow的研究,发生这种情况是因为字典的某些值是字符串。但我认为我在循环中引入的条件语句会隔离这些字符串,因为它们不符合这个条件。我想创建一个新的dict,只有int值发生了相同的TypeError。

有人有想法吗?

dictionary = {'a':1, 'b':2, 'c':'letter c', 'd':'letter d'}

for v in dictionary.values():
    if type(v) is int:
        total = sum(v)
        print(total)

3 个答案:

答案 0 :(得分:2)

for循环

中执行您要查找的内容
total = 0
for v in dictionary.values():
    if isinstance(v, int):
        total += v

或作为生成器表达式

total = sum(v for v in dictionary.values() if isinstance(v, int))

答案 1 :(得分:1)

您正在滥用sum函数。 v只是一个数字,而不是列表和总和列表。试试这个:

print(sum(filter(lambda x: type(x) == int, dictionary.values())))

或者这个:

total = 0
for v in dictionary.values():
    if type(v) is int:
        total = total + v
print total 

答案 2 :(得分:0)

你想要吗?

dictionary = {'a':1, 'b':2, 'c':'letter c', 'd':'letter d'}

total = 0
for v in dictionary.values():
    if type(v) is int:
        total += v
        print(total)

你的问题是你试图调用sum(int) Sum用于列表,而不是sum([1,2,3,5])= 11