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

2024-05-23 22:40:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望能够通过我的主函数和bin值循环到这些字典中的某些键。所有六个字典都有相同的键名,但是字典是唯一的。有更好的方法吗。初始化所有字典(即字典理解)或2。以更好的方式存储此数据(即嵌套字典、namedtuples…)

以下是我当前的词典初始化:

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并显示{'key':0}。这是Padraic的字典模板和Aleksi的理解的结合。感谢您提供简单的可扩展解决方案!在

^{pr2}$

Tags: 方法函数字典bintf方式解决方案tri
3条回答

可以使用以下方法复制词典:

new_dict = dict(old_dict)

如果要将所有键初始化为相同的值,还可以使用:

^{pr2}$

也就是说,在这种情况下:

template_dict = dict.fromkeys('HF NHF TF HM NHM TM'.split(), 0)

虽然如果初始值都相同,您也可以使用g.d.d.c的方法,它会自动创建所有内容。该方法的缺点是,它可能会更容易地屏蔽字典键中的键入错误,因为它会自动创建新的键,而不是引发异常,但显然它可能会使您的工作更轻松。最终,这一切都归结于偏好。在

如果需要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}

您可以创建新的dict并使用模板更新它们,这样就不必每次需要新dict时都手动输入数据

或者简单地说:

^{pr2}$

我想我会用这个:

from collections import defaultdict
container = defaultdict(lambda: defaultdict(int))

然后你做这个来记录:

^{pr2}$

相关问题 更多 >