#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. Упс. Я обновил ответ. Спасибо. Я предполагал, что первое значение строки (до
:
) было уникальным.