我有嵌套的词典,下面是我到目前为止的代码输出,这正是我需要和想要它们的方式。我试图添加第二个字典组ID列表的列表元素;一起获取与第一个字典相关的每个元素发生的总发生次数;这是一个具体的日期
{'2014-06-14':
{'205089113': [0, 1, 0, False, True],
'268243219': [0, 1, 0, False, True],
'216535211': [0, 0, 0, False, True],
'207385741': [0, 0, 0, False, True],
'207018490': [0, 0, 0, False, True],
'204059430': [0, 0, 0, False, True],
'209169283': [0, 1, 0, False, True],
'232067397': [0, 0, 0, False, True],
'204718647': [0, 1, 0, False, True],
'205438195': [0, 1, 0, False, True]},
'2014-06-20':
{'209989276': [1, 0, 0, False, True],
'209840693': [1, 0, 0, False, True],
'207067397': [1, 0, 0, False, True],
'207919002': [1, 0, 0, False, True],
'204718498': [2, 1, 0, False, True],
'204437024': [1, 0, 0, False, True],
'219878931': [1, 0, 0, False, True]},
我的意思是一个例子
'2014-06-14':[0,5,0,0,10],'2014-06-20': [8,1,0,0,7]}
每次我尝试len()甚至计数器模块时都会出现一个关键错误
下面的代码给出了第二个字典的出现次数,但似乎无法破解编码将其列表元素加在一起,不确定是否存在我不理解的直接方式或者它是否是甚至可能 for date in dates.keys():
print date, len(dates[date].keys())
试图指向正确的方向
答案 0 :(得分:1)
如果您将子词典转换为Pandas数据帧,则可以轻松完成:
import pandas as pd
d = {'2014-06-14': {'205089113': [0, 1, 0, False, True],
'268243219': [0, 1, 0, False, True],
'216535211': [0, 0, 0, False, True],
'207385741': [0, 0, 0, False, True],
'207018490': [0, 0, 0, False, True],
'204059430': [0, 0, 0, False, True],
'209169283': [0, 1, 0, False, True],
'232067397': [0, 0, 0, False, True],
'204718647': [0, 1, 0, False, True],
'205438195': [0, 1, 0, False, True]},
'2014-06-20': {'209989276': [1, 0, 0, False, True],
'209840693': [1, 0, 0, False, True],
'207067397': [1, 0, 0, False, True],
'207919002': [1, 0, 0, False, True],
'204718498': [2, 1, 0, False, True],
'204437024': [1, 0, 0, False, True],
'219878931': [1, 0, 0, False, True]}}
new_d = {}
for k in d.iterkeys():
new_d[k] = pd.DataFrame.from_dict(d[k], orient="index")
然后:
out = {}
for k in new_d:
out[k] = new_d[k].sum().tolist()
print out
{'2014-06-14': [0.0, 5.0, 0.0, 0.0, 10.0], '2014-06-20': [8.0, 1.0, 0.0, 0.0, 7.0]}
拥有Pandas数据帧将允许您轻松应用其他功能。
希望这有帮助。
答案 1 :(得分:0)
我假设您发布的输出错误,预期输出等于{'2014-06-14':[0,5,0,0,10],'2014-06-20': [8,1,0,0,7]}
。以下内容符合您的需求:
d = {'2014-06-14': {'205089113': [0, 1, 0, False, True],
'268243219': [0, 1, 0, False, True],
'216535211': [0, 0, 0, False, True],
'207385741': [0, 0, 0, False, True],
'207018490': [0, 0, 0, False, True],
'204059430': [0, 0, 0, False, True],
'209169283': [0, 1, 0, False, True],
'232067397': [0, 0, 0, False, True],
'204718647': [0, 1, 0, False, True],
'205438195': [0, 1, 0, False, True]},
'2014-06-20': {'209989276': [1, 0, 0, False, True],
'209840693': [1, 0, 0, False, True],
'207067397': [1, 0, 0, False, True],
'207919002': [1, 0, 0, False, True],
'204718498': [2, 1, 0, False, True],
'204437024': [1, 0, 0, False, True],
'219878931': [1, 0, 0, False, True]}}
result = {}
for key in d:
values = zip(*d[key].values())
result[key] = [sum(value_tuple) for value_tuple in values]
print result