Добавить новую пару ключевых значений в словарь Python

Я действительно застрял в проблемах здесь, я новичок в python и использую его для типичного требования. Я хочу добавить пары ключевых значений в словарь в цикле, например:

Eg_dict={}
for row in iterable: dict={row[1],row[2]}

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

Итак, мой вопрос прост, как добавить все записи из итерабельного в словаре? Это будет поведение по умолчанию массива в unix.

PS: итерабельность здесь может быть воспринята как объект csv.reader, и я пытаюсь вставить второй и третий столбцы в словарь.

2 ответа

Использовать назначение словаря:

for row in iterable: Eg_dict[row[1]] = row[2]

или когда-либо заменять весь код понятием dict:

Eg_dict = {row[1]: row[2] for row in iterable} # python 2.7 and up

или

Eg_dict = dict(row[1:3] for row in iterable) # python 2.3 and up

Если каждая row имеет фиксированное количество записей, вы можете использовать назначение кортежей:

for key, value in row: # two elements

или

for _, key, value in row: # three elements, ignore the first

чтобы сделать цикл более читаемым. Например {key: value for _, key, value in iterable}.

Вместо этого ваш код создает новый заданный объект (только уникальные значения, без ключей) каждый цикл, заменяя предыдущий.


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

d = dict([(row[1], row[2]) for row in iterable])

Это будет работать в любой версии Python.

Если вы используете 2. 7+ или 3, вы можете использовать понятное объяснение:

d = {row[1]:row[2] for row in iterable}

licensed under cc by-sa 3.0 with attribution.