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

这个问题在这里已经有了答案:

  • 使用'for'循环遍历字典12个答案

  • 看来你想迭代keysvalues 。 您可以通过迭代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

    上一篇: Iterate over a dictionary using 'for' loop in a class

    下一篇: Looping through dictionary and getting keys