我一直试图做的是总结“字典”的价值。我得到的错误是' 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)
答案 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