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新手,希望大牛指点,如何实现?

阅读 13.6k
4 个回答

提供一个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)]
>>> 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'}]

使用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)))
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏