KeyError:' name'为什么我不能使用' name'?

时间:2017-09-11 09:34:38

标签: python django

我想要一本字典有名字的关键& data.In views.py我写了

data_dict ={}
def try_to_int(arg):
    try:
        return int(arg)
    except:
        return arg

def main():
    book4 = xlrd.open_workbook('./data/excel1.xlsx')
    sheet4 = book4.sheet_by_index(0)

    data_dict_origin = OrderedDict()
    tag_list = sheet4.row_values(0)[1:]
    for row_index in range(1, sheet4.nrows):
        row = sheet4.row_values(row_index)[1:]
        row = list(map(try_to_int, row))
        data_dict_origin[row_index] = dict(zip(tag_list, row))

    if data_dict_origin['name'] in data_dict:
        data_dict[data_dict_origin['name']].update(data_dict_origin)
    else:
        data_dict[data_dict_origin['name']] = data_dict_origin

main()

当我打印出data_dict时,它是

OrderedDict([(1, {'user_id': '100', 'group': 'A', 'name': 'Tom', 'dormitory': 'C'}), (2, {'user_id': '50', 'group': 'B', 'name': 'Blear', 'dormitory': 'E'})])

我的理想词典是

dicts = {
    Tom: {
        'user_id': '100',
        'group': 'A', 
        'name': 'Tom',
        'dormitory': 'C'
    },
    Blear: {
    },
}

我该如何解决这个问题?我该怎么写呢?

2 个答案:

答案 0 :(得分:0)

代码在字典中使用了错误的密钥。密钥为1,2,并且没有name密钥。您可以改用此代码:

for value in data_dict.values():
    if value['name'] in data_dict:
        data_dict[value['name']].update(value)
    else:
        data_dict[value['name']] = value

答案 1 :(得分:0)

你的<span class="clearfix"></span> 将数字作为键和值作为值(从技术上讲,它是一个稀疏的dicts数组)。 &#34;名称&#34;密钥存在于那些dicts中,而不在data_dict_origin