我想快速得到一个字典,{'a': 1, 'b': 2, 'c': 3, 'd': 4}
方法1:用字典推导式,没成功,
方法2:用for i in range(4),逐个对应添加k-v对,
有没有更简便的方法生成{'a': 1, 'b': 2, 'c': 3, 'd': 4}这样的字典?
dict1 = {a: a ** 2 for a in range(1, 5)}
print(dict1) # {1: 1, 2: 4, 3: 9, 4: 16}
list1 = ['abcd']
print(list1) # ['abcd']
list1 = list('abcd')
print(list1) # ['a', 'b', 'c', 'd']
list2 = [1, 2, 3, 4]
dict2 = {(a for a in list1): (b for b in list2)}
print(dict2)
# {<generator object <genexpr> at 0x00000000020CE748>: <generator object <genexpr> at 0x00000000020CE7C8>}
dict2 = {a: b for a in list1 for b in list2}
print(dict2) # {'a': 4, 'b': 4, 'c': 4, 'd': 4}
dict4 = {}
dict4 = dict.fromkeys(list1, list2)
print(dict4) # {'a': [1, 2, 3, 4], 'b': [1, 2, 3, 4], 'c': [1, 2, 3, 4], 'd': [1, 2, 3, 4]}
# 下面的代码实现了快速生成{'a': 1, 'b': 2, 'c': 3, 'd': 4}字典的功能,
dict3 = {}
for i in range(4):
# print(i)
dict3[list1[i]] = list2[i] # 让列表元素,一一对应,
print(dict3) # {'a': 1, 'b': 2, 'c': 3, 'd': 4}
dict5 = {list1[i]: list2[i] for i in range(4)} # 让列表元素,一一对应,
print(dict5) # {'a': 1, 'b': 2, 'c': 3, 'd': 4}
有没有更简便的方法生成{'a': 1, 'b': 2, 'c': 3, 'd': 4}这样的字典?
通过 zip()创建字典对象:两个列表 key 和 value,转为这样的字典。key = ['a', 'b', 'c']
value = ['1', '2', '3']
d = dict(zip(key, value))
print(d.items(), d.keys(), d.values())
当然
dict1 = dict(zip("abcd","1234"))
dict1
{'a': '1', 'b': '2', 'c': '3', 'd': '4'}
a = zip('abcd', '1234') # zip 一一对应,
print(a) # <zip object at 0x000000000242E448>
dict1 = dict(a)
print(dict1) # {'a': '1', 'b': '2', 'c': '3', 'd': '4'}
list1 = list(a)
print(list1) # []
a = zip('abcd', '1234')
list2 = list(a)
print(list2) # [('a', '1'), ('b', '2'), ('c', '3'), ('d', '4')]
dict2 = dict(a)
print(dict2) # {}
dict3 = dict(zip('abcd', '1234'))
print(dict3) # {'a': '1', 'b': '2', 'c': '3', 'd': '4'}
dict4 = dict(zip('abcd', [1, 2, 3, 4])) # zip 一一对应,
print(dict4) # {'a': 1, 'b': 2, 'c': 3, 'd': 4}
list1 = list(a)
print(list1) # []
print(list2),可以正常输出列表,
print(list1),怎么输出是一个空列表?
a = zip('abcd', '1234')
这个对象,只能是 一次性 使用的?
{k:i for i , k in enumerate("abcd",1)}