请用一行代码把下面列表合成一个字典
list1 = ['name', 'age', 'gender']list2 = ['张三', 18, '男']
方案1
先写个长代码,然后用Python的列表解析合成一行。
思路是这样的,先分别循环两个列表,把序号相同的塞到一个键值对里面。
普通版本:
![c2324580671c998ff2c1890aa7a1f084.png](https://i-blog.csdnimg.cn/blog_migrate/44af84f7e5a67deef9d634435a10d376.jpeg)
一行代码版:
temp_dict2 = dict([(l1, l2) for index1, l1 in enumerate(list1) for index2, l2 in enumerate(list2) if index1 == index2])
看看输出结果:
![c2bf56ad5846fe68a7f237040ce873fa.png](https://i-blog.csdnimg.cn/blog_migrate/9c6560a86f707cc7aedece55f92debd0.jpeg)
方案二
第二种办法比第一种运行的速度快点,但是重复造轮子,不是很Python的e。
看看这种写法
dict(zip(list1,list2))
![adccaa5c16f486255e7e8901b6c5fbb1.png](https://i-blog.csdnimg.cn/blog_migrate/4b0eaae1b04cf433150874ea980cd88c.jpeg)
说说zip了,zip接受迭代函数,逐个取出,组成元组,放入字典。不可思议的是,这种列表元组对的格式可直接转换为字典的。
zip(list1,list2)
在python3当中,返回的是可迭代对象,更节省内存。查看原貌,可用list转化
![90f1ceb04a87f80b054d389cd33fa8b6.png](https://i-blog.csdnimg.cn/blog_migrate/de457e1001ae488ff3dea38bd0f9e610.jpeg)
相关阅读:
python-selenium登陆今日头条
内存只有1GB,老板让我读取4GB的文件