簡體   English   中英

將嵌套列表和元組列表轉換為字典 python

[英]Converting nested list and a list of tuples into a dictionary python

假設我有兩個列表如下:

test_list = [[1,2],[4,5]]

lat_long_list = [(2.3,4.5),(5.6,7.8),(9.2,5.3),(8.9,9.0)]

我想將這兩個列表轉換為字典,如下所示:

test_dict =    {vehicle 0:[
                    {1:{ lat: 2.3,
                         long:4.5,
                         key: 0
                       },
                    {2:{ lat:5.6,
                         long:7.8,
                         key: 1
                       }],
                {vehicle 1:[
                    {4:{ lat: 9.2,
                         long:5.3,
                         key: 2
                       },
                    {5:{ lat:8.9,
                         long:9.0,
                         key: 3
                       }]
                 }

我怎樣才能做到這一點?

你有 go:

test_list = [[1,2],[4,5]]

lat_long_list = [(2.3,4.5),(5.6,7.8),(9.2,5.3),(8.9,9.0)]

fields = ['lat','long','key']
test_dict = {}
ctr = 0
for i,l in enumerate(test_list):
    test_dict['vehicle '+str(i)] = []
    tempd = {}
    for j,l2 in enumerate(l):
        tempd[l2] = dict(zip(fields,list(lat_long_list[i+j+ctr])+[i+j+ctr]))
    ctr+=1
    test_dict['vehicle '+str(i)].append(tempd)

print(test_dict)

Output:

{'vehicle 0': [{1: {'lat': 2.3, 'long': 4.5, 'key': 0}, 2: {'lat': 5.6, 'long': 7.8, 'key': 1}}], 'vehicle 1': [{4: {'lat': 9.2, 'long': 5.3, 'key': 2}, 5: {'lat': 8.9, 'long': 9.0, 'key': 3}}]}

嵌套的 dict 和列表理解只是為了它的地獄:

d = {f"vehicle {num}": [{vehicle:{"lat":lat[0],"long":lat[1],"key":num*2+lat_num}}
                        for lat_num, (vehicle, lat) in enumerate(zip(item,lat_long_list[num*2:num*2+2]))]
                        for num, item in enumerate(test_list)}
print (d)

{'vehicle 0': [{1: {'lat': 2.3, 'long': 4.5, 'key': 0}},
               {2: {'lat': 5.6, 'long': 7.8, 'key': 1}}],
 'vehicle 1': [{4: {'lat': 9.2, 'long': 5.3, 'key': 2}},
               {5: {'lat': 8.9, 'long': 9.0, 'key': 3}}]}

我猜test_list將包含您的密鑰,而lat_long_list將包含您的值。

import pprint
test_list = [[1,2],[4,5]]
lat_long_list = [(2.3,4.5),(5.6,7.8),(9.2,5.3),(8.9,9.0)]

#Flatten your keys iterable
keys_list = itertools.chain.from_iterable(test_list)
print(keys_list)
>>> [1, 2, 4, 5]
result = dict([
    (key, value) for key, value in zip(keys_list,lat_long_list)
])
print(result)
>>>{1: (2.3, 4.5), 2: (5.6, 7.8), 4: (9.2, 5.3), 5: (8.9, 9.0)}

您可能需要檢查:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM