I wanted to create a dictionary using 2D ndarray for some millions of data.
Looking for a pythonic and performant way to achieve this
My ndarray:
format: [id, origin_lat, origin_lon, dest_lat,dest_lon, distance]
my_array = np.array([[245, 32.45,63.89,72.1,63.57,123.45],
[246, 61.73,42.71,75.54,-81.69,16.32]])
Expected Output:
my_dict = {
245: {
'origin_lat_lon': {
'lat': 32.45,
'lon': 63.89
},
'dest_lat_lon': {
'lat': 72.1,
'lon': 63.57
},
'distance': 123.45
},
246: {
'origin_lat_lon': {
'lat': 61.73,
'lon': 42.71
},
'dest_lat_lon': {
'lat': 75.54,
'lon': -81.69
},
'distance': 16.32
}
}
my_list = [{'lat': 32.45, 'lon': 63.89},
{'lat': 72.1, 'lon': 63.57},
{'lat': 61.73, 'lon': 42.71},
{'lat': 75.54, 'lon': -81.69}]
My code:
my_dict = dict()
my_list = list()
for arr in my_array:
origin_lat_lon = {'lat': arr[1],
'lon': arr[2]}
dest_lat_lon = {'lat': arr[3],
'lon': arr[4]}
value = {'origin_lat_lon':origin_lat_lon,'dest_lat_lon':dest_lat_lon,'distance':arr[5]}
my_dict[int(arr[0])]=value
my_list.append(origin_lat_lon)
my_list.append(dest_lat_lon)