Python:将列表设置为字典中的值

时间:2016-05-19 08:30:10

标签: python dictionary

我有一个列标题列表:

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个列名

2 个答案:

答案 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 = {}