Преобразование элементов списка в несколько словарей в одном списке - PullRequest
0 голосов
/ 20 марта 2020

Я работаю над проектом по созданию словаря Python. У меня есть два списка:

table_name=['new1','new2']
field_names=[['apple','banana'],['orange','Mellon']]

Я попробовал этот код:

dct = {}
for x in range(0, len(table_name)):
   dct[table_name[x]] = field_names[x]

Я получил этот словарь:

{"new1" : ['apple','banana'], "new2" : ['orange','Mellon']}

Я хочу что-то подобное:

{"new1" : [{'name':'apple'},{'name':'banana'}], "new2" : [{'name':'orange'},{'name':'Mellon'}]}

Я надеюсь, что кто-то может поделиться правильным подходом для выполнения этой задачи.

Ответы [ 3 ]

0 голосов
/ 20 марта 2020

Попробуйте:

dct = {k : [{'name' : j} for j in field_names[i]] for i,k in enumerate(table_name)}

Вывод :

{'new1': [{'name': 'apple'}, {'name': 'banana'}], 'new2': [{'name': 'orange'}, {'name': 'Mellon'}]}
0 голосов
/ 20 марта 2020

Попробуйте это ниже:

json_data = {"new1": ['apple', 'banana'], "new2": ['orange', 'Mellon']}
output_dict = {}
for obj in json_data.keys():
    output_dict[obj] = list(map(lambda x:{'new': x}, json_data[obj]))
print(output_dict)
0 голосов
/ 20 марта 2020

Вы можете zip здесь.

table_name=['new1','new2']
field_names=[['apple','banana'],['orange','Mellon']]
d1={}
for k,v in zip(table_name,field_names):
    d1[k]=[{'name':i} for i in v]

{'new1': [{'name': 'apple'}, {'name': 'banana'}],
 'new2': [{'name': 'orange'}, {'name': 'Mellon'}]}

Дикт-понимание из вышеперечисленного будет:

{k:[{'name':i} for i in v] for k,v in zip(table_name,field_names)}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...