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