当我遍历find_total()
字典时,我无法从DictionaryTest
类的channel_list
函数中获取返回值。 Python解释器给了我这个错误:
TypeError:'int'对象不可迭代
我在代码中做错了什么?
class DictionaryTest:
def __init__(self, dictionary):
self.dictionary = dictionary
def find_total(self):
total = 0
for channel_num, channel_det in self.dictionary:
total += channel_det['charge']
return total
channel_list = {1: {'name': 'Sony PIX', 'charge': 3},
2: {'name': 'Nat Geo Wild', 'charge': 6},
3: {'name': 'Sony SET', 'charge': 3},
4: {'name': 'HBO - Signature', 'charge': 25}}
user_2 = DictionaryTest(channel_list)
print(user_2.find_total())
答案 0 :(得分:1)
您似乎希望迭代keys
和values
。您可以通过迭代items()
:
for channel_num, channel_det in self.dictionary.items():
在您的情况下,for something in self.dictionary:
仅对键重复。键是整数。但是你试图将整数解包为两个值:channel_num, channel_det
这就是它失败的原因。
您只需要for
循环中的值,这样您也可以只遍历values()
:
for channel_det in self.dictionary.values():
真正高级的方法是使用生成器表达式和内置的sum
函数:
def find_total(self):
return sum(channel_det['charge'] for channel_det in self.dictionary.values())