我正在尝试找到将列表列表转换成字典的代码。可以说我有一个列表
list_one = [['id1', 'id2', id3', 'id4', 'id5'],
['1', 'Cat', '400', 'Fur', '50'],
['2', 'Dog', '500', 'Smelly', '60']]
字典应具有用于按此格式对字典中的每个列表编号的键
new_dict = {1.0: {'id1': 1,
'id2': 'Cat',
'id3': 400,
'id4': 'Fur',
'id5': 50},
2.0: {'id1': 2,
'id2': 'Dog',
'id3': 500,
'id4': 'Smelly'
'id5': 60}
这样的转换可以通过列表理解还是通过for循环来完成?
答案 0 :(得分:3)
使用枚举的简单dict-comprehension:
list_one = [['id1', 'id2', 'id3', 'id4', 'id5'],
['1', 'Cat', '400', 'Fur', '50'],
['2', 'Dog', '500', 'Smelly', '60']]
new_dict = {float(i): dict(zip(list_one[0], items))
for i, items in enumerate(list_one[1:], start=1)}
print(new_dict)
产生
{1.0: {'id1': '1', 'id2': 'Cat', 'id3': '400', 'id4': 'Fur', 'id5': '50'},
2.0: {'id1': '2', 'id2': 'Dog', 'id3': '500', 'id4': 'Smelly', 'id5': '60'}}
答案 1 :(得分:2)
在您的用例中,键是列表中的第一个列表,其余是对象。您可以将它们压缩在一起并创建该字典,如下所示:
ks, objs = list_one[0], list_one[1:]
myobjects = {i: dict(zip(ks, l)) for i,l in enumerate(objs)}
zip
将采用逐个元素对,并创建(x, y)
之类的元组,而dict
将从该元组中生成{x: y}
。可以找到文档here
答案 2 :(得分:2)
如果您对第三方图书馆熊猫没事
import pandas as pd
{float(k):v for k,v in enumerate(pd.DataFrame(list_one[1:],columns=list_one[0]).to_dict('records'),1)}
答案 3 :(得分:1)
以下应该可以解决问题:
>>> new_dict = {float(i): {list_one[0][j]:val for j,val in enumerate(list_one[i])} for i in range(1,len(list_one))}
>>> new_dict
{1.0: {'id1': '1', 'id2': 'Cat', 'id3': '400', 'id4': 'Fur', 'id5': '50'},
2.0: {'id1': '2', 'id2': 'Dog', 'id3': '500', 'id4': 'Smelly', 'id5': '60'}}