在类中使用'for'循环迭代字典
这个问题在这里已经有了答案:
看来你想迭代keys
和values
。 您可以通过迭代items()
来完成此操作:
for channel_num, channel_det in self.dictionary.items():
在你的情况下for something in self.dictionary:
迭代只能通过键。 钥匙是整数。 但是你尝试将整数解包为两个值: channel_num, channel_det
,这是它失败的原因。
补充评论:
你只需要for
-loop中的值,这样你也可以遍历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())
你应该迭代字典的items
:
class DictionaryTest:
def __init__(self, dictionary):
self.dictionary = dictionary
def find_total(self):
total = 0
for channel_num, channel_det in self.dictionary.items():
#Changed here only ^
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())
链接地址: http://www.djcxy.com/p/30369.html