我希望能够将我的main函数和 bin 值循环到这些字典中的某些键。所有六个词典都具有相同的键名,但词典是唯一的。是否有更好的方法来1.初始化所有词典(即字典理解)或2.以更好的方式存储这些数据(即嵌套词典,命名元组......)
这是我当前的字典初始化:
TRI_1 = {'HF' : 0, 'NHF' : 0, 'TF' : 0, 'HM' : 0, 'NHM' : 0, 'TM' : 0}
TRI_2 = {'HF' : 0, 'NHF' : 0, 'TF' : 0, 'HM' : 0, 'NHM' : 0, 'TM' : 0}
TRV_1 = {'HF' : 0, 'NHF' : 0, 'TF' : 0, 'HM' : 0, 'NHM' : 0, 'TM' : 0}
TRV_2 = {'HF' : 0, 'NHF' : 0, 'TF' : 0, 'HM' : 0, 'NHM' : 0, 'TM' : 0}
TRV_3 = {'HF' : 0, 'NHF' : 0, 'TF' : 0, 'HM' : 0, 'NHM' : 0, 'TM' : 0}
TRV_4 = {'HF' : 0, 'NHF' : 0, 'TF' : 0, 'HM' : 0, 'NHM' : 0, 'TM' : 0}
编辑:我的解决方案。我将来会记住g.d.d.c。的方法,但我需要有初始零值的键,所以我只需要打印TRI_1并且{'键' :0}出现。这是Padraic的词典模板和Aleksi的理解的结合。感谢您提供简单的可扩展解决方案!
TEMP = dict.fromkeys('HF NHF TF HM NHM TM'.split(), 0)
TRI_1, TRI_2, TRV_1, TRV_2, TRV_3, TRV_4 = ([dict(TEMP) for i in range(6)])
答案 0 :(得分:1)
我想我会用这个:
from collections import defaultdict
container = defaultdict(lambda: defaultdict(int))
然后你这样做来计算:
container['TRV_1']['HF'] += 1
答案 1 :(得分:1)
如果你想要一个dicts的模板:
template_dict = {'HF': 0, 'NHF': 0, 'TF': 0, 'HM': 0, 'NHM': 0, 'TM': 0}
TRI_1,TRI_2={},{}
TRI_1.update(template_dict)
TRI_2.update(template_dict)
print TRI_1,TRI_2
{'TF': 0, 'NHF': 0, 'HM': 0, 'NHM': 0, 'HF': 0, 'TM': 0} {'TF': 0, 'NHF': 0, 'HM': 0, 'NHM': 0, 'HF': 0, 'TM': 0}
您可以使用模板创建新的dicts并更新它们,这样您就不必在每次想要新的dict时手动输入数据。
或者简单地说:
TRI_1 = dict(template)
答案 2 :(得分:0)
您可以使用以下方法复制词典:
new_dict = dict(old_dict)
如果您要将所有键初始化为相同的值,您还可以使用:
new_dict = dict.fromkeys(keys, value)
就是说,在这种情况下:
template_dict = dict.fromkeys('HF NHF TF HM NHM TM'.split(), 0)
虽然初始值完全相同,但您也可以使用g.d.d.c的方法,它会自动创建所有内容。该方法的缺点是它可能更容易掩盖字典键中的拼写错误,因为它会自动创建新键而不是引发异常,但它显然可能使事情变得更容易。最后,这一切都归结为偏好。