zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
attributes = ['name', 'dob', 'gender']
values = [['jason', '2000-01-01', 'male'],
['mike', '1999-01-01', 'male'],
['nancy', '2001-02-01', 'female']
]
# expected outout:
out = [{'name': 'jason', 'dob': '2000-01-01', 'gender': 'male'},
{'name': 'mike', 'dob': '1999-01-01', 'gender': 'male'},
{'name': 'nancy', 'dob': '2001-02-01', 'gender': 'female'}]
r = []
for v in values:
out0 = {}
for i in range(0,len(attributes)):
out0[attributes[i]]=v[i]
r.append(out0)
print(r)
r2 = [dict(zip(attributes,v)) for v in values]
print(r2)
>>>a = [1,2,3]
>>> b = [4,5,6]
>>> zipped = zip(a,b) # 打包为元组的列表
>[(1, 4), (2, 5), (3, 6)]
>>>> zip(*zipped) # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
>[(1, 2, 3), (4, 5, 6)]