我想要一本字典有名字的关键& 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: {
},
}
我该如何解决这个问题?我该怎么写呢?
答案 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
。