我有一个列标题列表:
column_names = ['','column1', 'column2', 'column3']
我正在尝试创建一个字典来存储每列的最大值和最小值。我有最大/最小值但我无法以下列方式成功创建字典:
{
'csvfile1' :[{
"column1": [{
"max": "154790"
"min": "134070"
}],
"column2": [{
"max": "148686"
"min": "125753"
}],
"column3": [{
"max": "80591"
"min": "40644"
}]
}]
}
到目前为止,这是我的脚本:
max_min_data={}
max_min_data['name'] = defaultdict(column_names[1:])
for number in range(1,3):
max_min_data[name][column_names[number]]['max']=max_value
max_min_data[name][column_names[number]]['min']=min_value
这对我不起作用,有人可以解释为什么或我应该做些什么来创建我上面描述的结构?
我收到错误:
KeyError: 'column1'
我之前尝试过:
max_min_data='name'
for number in range(1,3):
max_min_data[name]=[column_names[number]]
但是这只给了'column3'的一个键而不是所有3个列名
答案 0 :(得分:2)
通过实现perl的自动修复功能
来使用嵌套字典class AutoVivification(dict):
"""Implementation of perl's autovivification feature."""
def __getitem__(self, item):
try:
return dict.__getitem__(self, item)
except KeyError:
value = self[item] = type(self)()
return value
# Store data
max_min_data = AutoVivification()
for number in range(1,3):
max_min_data[name][column_names[number]]['max']=max_value
max_min_data[name][column_names[number]]['min']=min_value
答案 1 :(得分:0)
根据https://docs.python.org/2/tutorial/datastructures.html
创建字典键:值必须执行以下操作
字典[key] =值
你不能做字典[key1] [key2] [key3] = value
另外,我没有看到你的词典宣布
dictionary = {}