将多个python词典初始化为相同的键名和值

时间:2014-06-13 16:21:43

标签: python dictionary

我希望能够将我的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)])

3 个答案:

答案 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的方法,它会自动创建所有内容。该方法的缺点是它可能更容易掩盖字典键中的拼写错误,因为它会自动创建新键而不是引发异常,但它显然可能使事情变得更容易。最后,这一切都归结为偏好。