首页 > Python列表嵌套字典

Python列表嵌套字典

现有:

list1=['neil','mike','lucy']
list2=['123456','xuiasj==','passWD123']
list3=['www.abc.com','www.mike.org','www.lucy.gov']

需要形成列表:

fin_list = [{'name':'neil','passwd':'123456','url':'www.abc.com'},{'name':'mike','passwd':'xuiasj==','url':'www.mike.org'},{'name':'lucy','passwd':'passWD123','url':'www.lucy.gov'}]

本人python新手,希望大牛指点,如何实现?


>>> fin_list = []
>>> for i, name in enumerate(list1):
...     d = {}
...     d['name'] = name
...     d['password'] = list2[i]
...     d['url'] = list3[i]
...     fin_list.append(d)
...
>>> fin_list
[{'url': 'www.abc.com', 'password': '123456', 'name': 'neil'}, {'url': 'www.mike.org', 'password': 'xuiasj==', 'name': 'mike'}, {'url': 'www.lucy.gov', 'password': 'passWD123', 'name': 'lucy'}]

提供一个pythonic的写法:

list1 = ['neil', 'mike', 'lucy']
list2 = ['123456', 'xuiasj==', 'passWD123']
list3 = ['www.abc.com', 'www.mike.org', 'www.lucy.gov']
my_list = []
for name, password, url in zip(list1, list2, list3):
    my_list.append({'name': name, 'passwd':password, 'url': url})
print(my_list)

还有一点,题主既然是新手,那么要注意python的代码编写规范(一般遵循的是PEP8),主要是这几天看别人的代码,太乱了...看到题主的

list1=['neil','mike,'lucy']

“=”两边没空格,所以想提示一下。推荐使用IDE,编码不规范它会给你提示的


最好能自己先尝试一下。

list0=['name','password','url']
print [dict(zip(list0, l)) for l in zip(list1, list2, list3)]

使用Python自带的zip函数

fin_list = []
style = ['name','passwd','url']
fin_list.append(dict(zip(style,list1))) # [{'name':'neil','passwd':'mike','url':'lucy'}]
fin_list.append(dict(zip(style,list2)))
fin_list.append(dict(zip(style,list3)))
【热门文章】
【热门文章】