-
-
Save enuk1dze/a946e7d3240310e91569 to your computer and use it in GitHub Desktop.
Словарь из списков
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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