Есть более краткий способ сделать это в Python ?:Что такое Pythonic способ объединить две последовательности в словарь?
def toDict(keys, values):
d = dict()
for k,v in zip(keys, values):
d[k] = v
return d
Есть более краткий способ сделать это в Python ?:Что такое Pythonic способ объединить две последовательности в словарь?
def toDict(keys, values):
d = dict()
for k,v in zip(keys, values):
d[k] = v
return d
Если keys
'размер может быть больше, а затем values
' один, то вы можете использовать itertools.izip_longest
(Python 2.6), который позволяет задать значение по умолчанию для остальных ключей:
from itertools import izip_longest
def to_dict(keys, values, default=None):
return dict(izip_longest(keys, values, fillvalue=default))
Пример:
>>> to_dict("abcdef", range(3), 10)
{'a': 0, 'c': 2, 'b': 1, 'e': 10, 'd': 10, 'f': 10}
Примечание: itertools.izip*()
функция в отличии от zip()
функции возврата итераторов не списки.
Наряду с правильными ответами, которые у вас были до сих пор для этой техники, я укажу, что при указании функции «to_dict» является более Pythonic, чем «toDict». См. [PEP 8] (http://www.python.org/dev/peps/pep-0008 «PEP 8») для рекомендаций стиля для написания кода Python. – bignose
+1 для того, чтобы помочь кому-то, кто явно интересуется «способом». – physicsmichael
Спасибо за хед-ап. Тем не менее, это скорее относится к обозреваемому вопросу в соответствии с «Руководством по стилю кодирования Python». – guillermooo