Как преобразовать каждый элемент списка в словарь?

#python #django

#python #django

Вопрос:

Здесь у меня есть такой список.

 ls = ['Small:u', 'Small:o']
  

Я хочу создать словарь для каждого элемента списка, подобного этому.

 dict1 = {'Small':'u'}
dict2 = {'Small':'o'}
  

Как я могу это сделать? Возможно ли это?

Ответ №1:

 >>> x = [dict([pair.split(":", 1)]) for pair in ['Small:u', 'Small:o']]
>>> x
[{'Small': 'u'}, {'Small': 'o'}]
  

Ответ №2:

Да, это возможно, но я не уверен, что это возможно (или вообще хорошая идея) — программно присваивать имена переменных новым словарям, поэтому вместо этого более простой способ — создать словарь словарей:

 dic_of_dics = {}
for index, item in enumerate(ls):
    i, j = item.split(':')
    dic_of_dics[f'dict{index}'] = {i : j}
  

Ответ №3:

Это другой способ:

 ls = ['Small:u', 'Small:o']
dict_list = []
for i in ls:
    k, v = i.split(':')
    dict_list.append({k: v})

print(dict_list)
print(dict_list[1].values())
  

Ответ №4:

Возможно, с минимальной строкой:

 ls = ['Small:u', 'Small:o']
dict_list = map(lambda x:dict([x.split(':')]), ls)
# for python3: print(list(dict_list))
# for Python2: print(dict_list)
  

Объяснение: я использую map функцию для преобразования списка строк в список списков. Затем я передаю его dict (чтобы преобразовать их в словарь).

Комментарии:

1. Вы запускали это? Это приведет к {"Small": "o"} .

2. Упс. Я обновил ответ. Спасибо. Я предполагал, что первое значение строки (до : ) было уникальным.