Конвертировать два списка в словарь

Просто для полноты: пока набор значений не слишком велик, вы могли бы также просто построить строку с выражением, подобным

... WHERE tab.col = ? OR tab.col = ? OR tab.col = ?

, который вы могли бы затем перейти к prepare (), а затем использовать setXXX () в цикле для установки всех значений. Это выглядит yucky, но многие «большие» коммерческие системы обычно делают такие вещи до тех пор, пока они не достигнут ограничений, специфичных для БД, таких как 32 КБ (я думаю, это так) для операторов в Oracle.

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

1000
задан Georgy 26 June 2019 в 12:26
поделиться

4 ответа

Как это:

>>> keys = ['a', 'b', 'c']
>>> values = [1, 2, 3]
>>> dictionary = dict(zip(keys, values))
>>> print(dictionary)
{'a': 1, 'b': 2, 'c': 3}

Вуаля:-), попарное dict конструктор и zip функция удивительно полезны: https://docs.python.org/3/library/functions.html#func-dict

1797
ответ дан Saurav Sahu 26 June 2019 в 12:26
поделиться
>>> keys = ('name', 'age', 'food')
>>> values = ('Monty', 42, 'spam')
>>> dict(zip(keys, values))
{'food': 'spam', 'age': 42, 'name': 'Monty'}
30
ответ дан iny 26 June 2019 в 12:26
поделиться

Попробуйте это:

>>> import itertools
>>> keys = ('name', 'age', 'food')
>>> values = ('Monty', 42, 'spam')
>>> adict = dict(itertools.izip(keys,values))
>>> adict
{'food': 'spam', 'age': 42, 'name': 'Monty'}

В Python 2, это также более экономично в потреблении памяти по сравнению с zip.

121
ответ дан Jean-François Fabre 26 June 2019 в 12:26
поделиться

Если необходимо преобразовать ключи или значения прежде, чем создать словарь тогда , выражение генератора могло использоваться. Пример:

>>> adict = dict((str(k), v) for k, v in zip(['a', 1, 'b'], [2, 'c', 3])) 

Смотрят Код Как Pythonista: Идиоматический Python .

12
ответ дан jfs 26 June 2019 в 12:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: