заполнение словаря с пониманием списка - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь заполнить словарь d, ключами из списка names например,

names=['a','v']
[d.update({str(n+'__k'):[1,2]} for n in names)]

Тем не менее,

ValueError: dictionary update sequence element #0 has length 1; 2 is required

Как получить d={'a__k':[1,2],'v__k':[1,2]}? Почему это ошибка?

Ответы [ 2 ]

0 голосов
/ 30 апреля 2018

Вы можете сделать это, разделив две операции обновления и создания dict, используя dict понимание

{n+'__k':[1,2] for n in names}

Должно работать нормально. Если вам нужно обновить d, то вы можете сделать:

d.update({n+'__k':[1,2] for n in names})
0 голосов
/ 30 апреля 2018

В современных версиях Python вы можете создать словарь с пониманием словаря:

{x: '%s__k' % x for x in names}

Обратите внимание, что я предпочитаю использовать оператор строки%, а не конкатенацию. это немного более эффективно, но, на мой взгляд, легче читать.

...