Reputation: 13
I am using python 3.7. I have an array of arrays:
[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
How can I make it become an array of objects?
[
{
name:1,
surname:2,
price:3,
location:4
},
{
name:5,
surname:6,
price:7,
location:8
},
{
name:9,
surname:10,
price:11,
location:12
}
]
I tried to use
array=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
json_str = json.dumps(array)
but it does not work.
Upvotes: 0
Views: 3881
Reputation: 971
input
a = ["AB", "corona"]
b = ["india",'openVINO']
c = ["korea"]
d = ["26", "10.mp3", "Nvidia.mp4"]
e = ["washington DC",6]
f = ['swiss']
import itertools
lst = [a,b,c,d,e,f]
# print(lst)
lsts = list(itertools.product(*lst))
for lst in lsts:
print('\n')
for con in lst:
print(con)
output
AB
india
korea
26
washington DC
swiss
AB
india
korea
26
6
swiss
AB
india
korea
10.mp3
washington DC
swiss
AB
india
korea
10.mp3
6
swiss
AB
india
korea
Nvidia.mp4
washington DC
swiss
AB
india
korea
Nvidia.mp4
6
swiss
AB
openVINO
korea
26
washington DC
swiss
AB
openVINO
korea
26
6
swiss
AB
openVINO
korea
10.mp3
washington DC
swiss
AB
openVINO
korea
10.mp3
6
swiss
AB
openVINO
korea
Nvidia.mp4
washington DC
swiss
AB
openVINO
korea
Nvidia.mp4
6
swiss
corona
india
korea
26
washington DC
swiss
corona
india
korea
26
6
swiss
corona
india
korea
10.mp3
washington DC
swiss
corona
india
korea
10.mp3
6
swiss
corona
india
korea
Nvidia.mp4
washington DC
swiss
corona
india
korea
Nvidia.mp4
6
swiss
corona
openVINO
korea
26
washington DC
swiss
corona
openVINO
korea
26
6
swiss
corona
openVINO
korea
10.mp3
washington DC
swiss
corona
openVINO
korea
10.mp3
6
swiss
corona
openVINO
korea
Nvidia.mp4
washington DC
swiss
corona
openVINO
korea
Nvidia.mp4
6
swiss
Upvotes: 0
Reputation: 26315
If we read the documentation of json.dumps
:
Serialize obj to a JSON formatted str using this conversion table.
Which is not what we want. We want to transform your list of lists to a list of dictionaries, where the keys ['name', 'surname', 'price', 'location']
are zipped with each sub list.
An easy solution would be to use zip()
inside a list comprehension:
lst = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
keys = ['name', 'surname', 'price', 'location']
print([dict(zip(keys, sublst)) for sublst in lst])
Output:
[{'name': 1, 'surname': 2, 'price': 3, 'location': 4}, {'name': 5, 'surname': 6, 'price': 7, 'location': 8}, {'name': 9, 'surname': 10, 'price': 11, 'location': 12}]
Note: This assumes the zipped lists are of equal length. Otherwise we can use itertools.zip_longest
to zip uneven length lists.
Upvotes: 4
Reputation: 409
Judging from the output you have given as an example, I am guessing that you are looking to create a list of dictionaries. Following script should grant your the output saved as new_list
array=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
new_list = []
for element in array:
temp_dict = {}
for x in element:
if element.index(x) == 0:
temp_str = 'name'
elif element.index(x) == 1:
temp_str = 'surname'
elif element.index(x) == 2:
temp_str = 'price'
elif element.index(x) == 3:
temp_str = 'location'
temp_dict[temp_str] = x
new_list.append(temp_dict)
print(new_list)
Upvotes: -1