我有两个清单:
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}
我该怎么做?
提前致谢。
答案 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