Ответ 1
Вы можете использовать функцию zip:
dict(zip(x, y))
>>> x = ['1', '2', '3', '4']
... y = [[1,0],[2,0],[3,0],[4,]]
>>> dict(zip(x, y))
0: {'1': [1, 0], '2': [2, 0], '3': [3, 0], '4': [4]}
x = ['1', '2', '3', '4']
y = [[1,0],[2,0],[3,0],[4,]]
Я хочу создать словарь, чтобы значения x и y будет соответствовать следующим образом:
1: [1,0], 2: [2,0]
и т.д.
Вы можете использовать функцию zip:
dict(zip(x, y))
>>> x = ['1', '2', '3', '4']
... y = [[1,0],[2,0],[3,0],[4,]]
>>> dict(zip(x, y))
0: {'1': [1, 0], '2': [2, 0], '3': [3, 0], '4': [4]}
В python > 2.7 вы можете использовать понимание dict:
>>> x = ['1', '2', '3', '4']
>>> y = [[1,0],[2,0],[3,0],[4,]]
>>> mydict = {key:value for key, value in zip(x,y)}
>>> mydict
{'1': [1, 0], '3': [3, 0], '2': [2, 0], '4': [4]}
>>>
Тем не менее, лучший ответ уже дан
dict (zip (x, y))
В python <= 2.7 вы можете использовать itertools.izip
, если вы работаете с большими списками, поскольку izip
возвращает итератор. Для небольших списков, подобных вашим, использование izip
будет чрезмерным. Обратите внимание, однако, что itertools.izip
disapeared в python 3. В python 3, встроенный zip
уже возвращает итератор, и в результате izip
больше не нужен.
Быстрый и простой ответ dict(zip(x,y))
, если вы в порядке, когда клавиши являются строками. в противном случае используйте dict(zip(map(int,x),y))
Вы можете использовать itertools.izip
, чтобы выполнить это.
from itertools import izip
x = ['1', '2', '3', '4']
y = [[1,0],[2,0],[3,0],[4,]]
dict(izip(x, y))
Если ваш вкус Python равен 3.x, вы можете использовать itertools.zip_longest
, чтобы сделать то же самое.
from itertools import zip_longest
x = ['1', '2', '3', '4']
y = [[1,0],[2,0],[3,0],[4,]]
dict(zip_longest(x, y))