Skip to content

Instantly share code, notes, and snippets.

@enuk1dze
Created February 24, 2015 20:23
Show Gist options
  • Save enuk1dze/a946e7d3240310e91569 to your computer and use it in GitHub Desktop.
Save enuk1dze/a946e7d3240310e91569 to your computer and use it in GitHub Desktop.
Словарь из списков
import itertools
"""
Есть два списка разной длины. В первом содержатся ключи, а во втором значения.
Напишите функцию, которая создаёт из этих ключей и значений словарь.
Если ключу не хватило значения, в словаре должно быть значение None.
Значения, которым не хватило ключей, нужно игнорировать.
"""
a = ['a', 'b', 'c']
b = [10, 20, 1, 2, 3]
print( dict([ item for item in list(itertools.zip_longest(a,b)) if item[0] != None]) )
a = ['a', 'b', 'c']
b = [10, 20]
print( dict([ item for item in list(itertools.zip_longest(a,b)) if item[0]]) )
# Без itertools
a = ['a', 'b', 'c']
b = [10, 20, 1, 2, 3]
print( dict([ a.index(i) < len(b) and (i, b[a.index(i)]) or (i, None) for i in a]) )
a = ['a', 'b', 'c']
b = [10, 20]
print( dict([ a.index(i) < len(b) and (i, b[a.index(i)]) or (i, None) for i in a]) )
# Result
# {'a': 10, 'b': 20, 'c': 1}
# {'a': 10, 'b': 20, 'c': None}
# {'a': 10, 'b': 20, 'c': 1}
# {'a': 10, 'b': 20, 'c': None}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment