【发布时间】:2013-10-22 16:34:09
【问题描述】:
我很确定这是一个 n00b 问题,但我似乎无法弄清楚。任何帮助表示赞赏。
我有一个生成一系列文件的应用程序,每个文件中都有一个字典,格式如下:
{date1:{key1:result1, key2:result2},date2:{key2:result3}}
我想计算每个值的每日平均值。因此,我想为每个唯一键创建一个字典,以汇总所有文件的结果:
unique_key_dict = {date1:[file1_result, file2_result],date2:[file1_result, file2_result]}
我不会提前知道键的名称或会有多少个唯一键,尽管在我的整个数据集中它不会超过 25 个唯一键,并且出于速度原因,我只想打开每个归档一次。
如何在 Python 中编写以下代码?
for date in file_dict:
for key in file_dict[date]:
# if key_dict does not exist from a previous file or date, create it
# once the dictionary exists, append this value to the list tied to the date key.
我似乎无法弄清楚如何使用键名动态创建字典。如果我动态打印他们的名字,我会使用"dict_for_%s" % key,但我不是在尝试打印,而是在尝试创建字典。
另外,我可以只创建一个庞大的字典...哪个更快?一个庞大的字典还是 15-25 个单独的字典?
【问题讨论】:
-
你是如何将字典存储在文件中的?
-
只是 JSON。这是一个示例:
{"2013-05-07T07:00:00+0000": {"recommended_pages": 1}, "2013-04-19T07:00:00+0000": {"page_profile": 1}, "2013-01-07T08:00:00+0000": {"mobile": 2, "page_profile": 1}} -
您是否正在尝试创建一个名称类似于
dict_for_whatever的字典,即动态创建一个特定名称的对象?如果是这样,那不是一个好主意,您应该按照@forefinger 的建议做,并将其包装在一个字典中。 -
是的,这就是我想要创造的。 @DSM 为什么这是个坏主意?我已经搜索过了,但在 Google 或 SO 中,我什至没有找到任何与我无关的东西,因为“为什么在 python 中动态创建对象是个坏主意”
-
动态创建对象也不错。动态创建 names 是个坏主意。请参阅here,以及其中的链接。在您制作完这些对象后,您打算如何引用它们?要么你硬编码每个名字并且有很多重复,要么你将不得不将它们存储在某种结构中以便像列表或字典一样循环。但无论哪种情况,动态创建名称都无济于事。你认为这样做会让你不再使用 dict 吗?
标签: python-2.7 dictionary