添加打印到字典的内容

时间:2014-04-18 19:11:25

标签: python python-2.7

我有两个清单:

list1 = ['a', 'b', 'c', 'd']

list2 = ['A'. 'B', 'C', 'D']

每次调用我的函数时,我都打印出每个列表的随机元素:

def whatever():
    print 'Element of list 1: ', random.choice(list1), 'Element of list 2: ', random.choice(list2)

我需要将这些打印的元素添加到词典中(我不确定它是否是最佳解决方案),以便跟踪每个元素的打印次数和我需要将此字典保存为持久文件。

这就是我需要的:

new_list1 = {}  # initially empty
new_list2 = {}  # initially empty

第一次调用我的函数后:

new_list = {'element4 of list1':1, 'element6 of list2': 1}

每次调用该函数时,我的new_list都会更新并保存更新。 多次调用函数后:

new_list = {'element1 of list1':1, 'element1 of list2': 1,
            'element2 of list1':1, 'element2 of list2': 2,
            'element3 of list1':2, 'element3 of list2': 1}

我该怎么做?

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可以创建一个为您执行此操作的类:

 from collections import defaultdict

 class AutoTrackingDict(dict):
   def __init__(self, **kwargs):
     super(AutoTrackingDict, self).__init__(**kwargs)
     self.counter = defaultdict(int)

   def __str__(self):
     for key in self.keys():
       self.counter[key] += 1
     return str(self.counter)

通过重载__str__,您可以打印出所有密钥以及访问它们的次数。

答案 1 :(得分:0)

我首先要创建一个字典,其中键是相应列表中的值..并从0开始

count_dict1 = {}
for element in list1:
    count_dict1[element] = 0
count_dict2 = {}
for element in list2:
    count_dict2[element] = 0

或理解

count_dict1 = {element:0 for element in list1}
count_dict2 = {element:0 for element in list2}

然后在打印每一行之前,将值存储在临时变量中,以便您可以在count_dictx中找到它并增加值。

def whatever():
    element1 = random.choice(list1)
    element2 = random.choice(list2)
    count_dict1[element1] += 1
    count_dict2[element2] += 1
    print 'Element of list 1: ', element1 , 'Element of list 2: ', element2