gpt4 book ai didi

python - 在类中使用 'for' 循环迭代字典

转载 作者:太空宇宙 更新时间:2023-11-03 15:15:13 26 4
gpt4 key购买 nike

我无法从 find_total() 获取返回值函数位于 DictionaryTest类,当我迭代 channel_list 时字典。 Python 解释器给我这个错误:

TypeError: 'int' object is not iterable

我在代码中做错了什么?

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())

最佳答案

您似乎想迭代。您可以通过迭代 items() 来完成此操作:

for channel_num, channel_det in self.dictionary.items():

在您的情况下,对于 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())

关于python - 在类中使用 'for' 循环迭代字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43938401/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com