对字典

时间:2016-10-11 01:59:57

标签: python-3.x

所以我有一个这样的字典:

{'key1': [<__main__.OrderRecord object at 0x02C70C90>], 'key2': [<__main__.OrderRecord object at 0x02C709B0>, <__main__.OrderRecord object at 0x02BC9AB0>], 'key3': [<__main__.OrderRecord object at 0x02C2F2B0>]}

Class对象包含以下元素:

class OrderRecord:
"""The OrderRecord class
Data attributes: date of type str
                 location of type str
                 name of type str
                 colour of type str
                 ordernum of type int
                 cost of type int
"""

def __init__(self, file_line):
    """Takes a given file line and initialises an OrderRecord instance"""

    split_file = file_line.split(",")
    self.date = split_file[0]
    self.location = split_file[1]
    self.name = split_file[2]
    self.colour = split_file[3]
    self.ordernum = split_file[4]
    self.costs = self.cost_of_order()

我需要做的是获取Class对象中的所有不同颜色(每个对象只有一种颜色,但它们可能与其他对象相同),然后是对象数量的计数含有那种颜色。

输出将是这样的:

Colour variables:       No. of objects:    
Colour1                 2
Colour2                 1
Colour3                 1
...                    ...

Etc等

我认为我可以通过从原始文件数据中获取信息并使用for循环或其他内容将其索引到其中来获取信息,但我只是认为直接读取Class对象会更容易,如果有可能的话所有?请注意,某些键可以包含多个Class对象的单个列表。

1 个答案:

答案 0 :(得分:0)

这是使用collections.counter

的好机会
from collections import Counter

object_dict = {'key1': [<__main__.OrderRecord object at 0x02C70C90>]}
cnt = Counter()
for item_group in object_dict.values():
    for item in item_group:
        cnt[item.color] += 1

然后,您可以从cnt计数器对象访问有关计数的各种信息,您可以找到有用的各种方法,例如most_common