#python
#python
Вопрос:
Предположим, у меня есть список li=['project1','project2','project3']
, в который я хочу добавить эти значения в качестве ключа в словарь, и значение первого ключа должно быть завершено rest onhold
проекты могут быть любыми, и значение первого проекта в списке должно быть завершено, требуется сохранить вывод:
dict={'project1':'completed','project2':'onhold','project3':'onhold'}
li=['project1','project2','project3']
for trav_cont in li:
dict[trav_cont]='completed'
Комментарии:
1. Вы можете использовать
zip()
:my_dict = dict(zip(li, ('completed',) ('onhold',) * (len(li) - 1)))
. Не используйтеdict
в качестве имени переменной, вы затеняете встроенную функцию.
Ответ №1:
Вы можете использовать enumerate
, чтобы узнать позицию в списке, т.е.:
li=['project1','project2','project3']
dct = {i: 'completed' if inx==0 else 'onhold' for inx, i in enumerate(li)}
print(dct) # {'project1': 'completed', 'project2': 'onhold', 'project3': 'onhold'}
Я использовал здесь так называемое понимание dict в сочетании с троичным if, поэтому значение равно 'completed'
, если его первый элемент (имеет индекс 0, поскольку индексы python основаны на 0) else 'onhold'
Ответ №2:
Вы можете создать словарь с предопределенными ключами и значением по умолчанию value
:
my_dict = dict.fromkeys(li, 'onhold')
my_dict['project1'] = 'completed'
Дает:
{'project1': 'completed', 'project2': 'onhold', 'project3': 'onhold'}
Комментарии:
1. Это самый чистый ответ.
2. Но имя не всегда будет project1 оно должно быть динамическим
3. @shee8, вы можете использовать
my_dict[next(iter(my_dict))] = 'completed'
для установки значения для первого ключа. (Это будет работать только на python 3.6 )
Ответ №3:
for idx, key in enumerate(li):
if idx == 0:
dixt[key] = 'completed'
continue
dict[key] = 'onhold'
Комментарии:
1. Просто используйте
else
, вам это не нужноcontinue
.