我有三个列表-名称1、名称2、距离-使用以下代码:
distdictionary = [{a: {b:c}} for a,b,c in zip(name1, name2, distance)]
我有一本字典,看起来像这样:
[{'name1': {'name2': 737}},{'name1': {'name2': 717}}, {'name1': {'name2': 749}}....etc]
我要找的是:
{'name1':{'name2': 737,'name2': 717, 'name2': 749}....etc]
name1与name2和距离有一对多的关系,它将是嵌套字典的开始。
添加一些显示列表的澄清/编辑:
name1 name2 distance
----- ----- --------
John Sarah 23
John Jane 64
John Anne 45
David Sarah 33
David Jane 56
David Anne 67
Mike Sarah 87
Mike Jane 24
Mike Anne 89
嵌套字典应该如下所示:
{'John: {'Sarah': 23, 'Jane': 64, 'Anne': 45},
David: {'Sarah': 33, 'Jane': 56, 'Anne': 67},
Mike: {'Sarah': 87, 'Jane': 24, 'Anne': 89}}
非常感谢您在这方面的帮助。。。。
您可以通过创建一个嵌套循环来绕过它,在它内部有一个临时字典,它会为name1
中的每个唯一元素更新。
在下面的示例中,temp_dict1
、temp_dict2
和temp_dict3
中的每一个都只由您应该创建的循环中的一个临时字典表示解释:
name1 =["John","John","John","David","David","David","Mike","Mike","Mike"]
name2 = ["Sarah","Jane","Anne","Sarah","Jane","Anne","Sarah","Jane","Anne"]
distance =[23,64,45,33,56,67,87,24,89]
temp_dict1 = {}
temp_dict2 = {}
temp_dict3 = {}
my_dict={}
temp_dict1[name2[0]]=distance[0]
temp_dict1[name2[1]]=distance[1]
temp_dict1[name2[2]]=distance[2]
my_dict[name1[0]]=temp_dict1
temp_dict2[name2[3]]=distance[3]
temp_dict2[name2[4]]=distance[4]
temp_dict2[name2[5]]=distance[5]
my_dict[name1[3]]=temp_dict2
temp_dict3[name2[6]]=distance[6]
temp_dict3[name2[7]]=distance[7]
temp_dict3[name2[8]]=distance[8]
my_dict[name1[6]]=temp_dict3
my_dict
输出为:
{'John': {'Sarah': 23, 'Jane': 64, 'Anne': 45},
'David': {'Sarah': 33, 'Jane': 56, 'Anne': 67},
'Mike': {'Sarah': 87, 'Jane': 24, 'Anne': 89}}
最终解决方案是:
name1 =["John","John","John","David","David","David","Mike","Mike","Mike"]
name2 = ["Sarah","Jane","Anne","Sarah","Jane","Anne","Sarah","Jane","Anne"]
distance =[23,64,45,33,56,67,87,24,89]
my_dict={}
start = 0
stop = 3
while start < len(name1):
temp_dict = {}
for i in range(start,stop):
temp_dict[name2[i]]=distance[i]
my_dict[name1[start]]=temp_dict
start = start + 3
stop = stop +3
首先,这里:
distdictionary = [{a: {b:c}} for a,b,c in zip(name1, name2, distance)]
您创建的是一个列表而不是一个字典,称之为字典可能会让人感到困惑。
name1列(它是一个列表(是否总是遵循相同的模式?每个名字重复三次?