如何将字典从一种格式更改为另一种格式?

时间:2013-10-15 00:52:39

标签: python-2.7 dictionary

我很确定这是一个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个单独的词典?

1 个答案:

答案 0 :(得分:2)

这是其中的一部分:

unique_key_dict = {}
for date in file_dict:
  for key in file_dict[date]:
    if date not in unique_key_dict: unique_key_dict[date] = []
    unique_key_dict[date].append(file_dict[date][key])

或许你想要

unique_key_dict = {}
for date in file_dict:
  for key in file_dict[date]:
    if key not in unique_key_dict: unique_key_dict[key] = {}
    if date not in unique_key_dict[key]: unique_key_dict[key][date] = []
    unique_key_dict[key][date].append(file_dict[date][key])

然后你有一个dict,它将每个键映射到一个dict,这些dicts将日期映射到值数组。

在此之后获得平均值:

for key in unique_key_dict:
  for date in unique_key_dict[key]:
    avg = sum(float(x) for x in unique_key_dict[key][date]) / len(unique_key_dict[key][date])
    print key, date, avg