我有一个名为lst的字符串列表,其中包含三个人的姓名,城市和电子邮件地址。我有一个名为数据的字典,只包含密钥。
lst = ['James','New York','james@email.com','Matt','San Francisco','matt@email.com','Jessica','Los Angeles','jessica@email.com']
data = {
"Name": None,
"City": None,
"email": None
}
我想将lst项目映射为数据中的值,并生成一个新的词典列表,如下所示,
newlst = [{
"Name": "James",
"City": "New York",
"email": "james@email.com"
},
{
"Name": "Matt",
"City": "San Francisco",
"email": "matt@email.com"
},
{
"Name": "Jessica",
"City": "Los Angeles",
"email": "jessica@email.com"
}]
我知道如何将单个值添加到词典中的特定键,如数据[" Name"] =" James"但是我如何通过使用list / dict理解或迭代来实现这一目标呢?
答案 0 :(得分:5)
这是一种使用列表理解的方法。我们的想法是,我们根据键的拉链和时间的三个值创建一个字典。
lst = [
'James', 'New York', 'james@email.com',
'Matt', 'San Francisco', 'matt@email.com',
'Jessica', 'Los Angeles', 'jessica@email.com',
]
keys = [
'Name',
'City',
'email',
]
newlst = [
dict(zip(keys, values)) for values in [iter(lst)] * len(keys)
]
print(newlst)
<强>输出强>:
[
{'City': 'New York', 'Name': 'James', 'email': 'james@email.com'},
{'City': 'San Francisco', 'Name': 'Matt', 'email': 'matt@email.com'},
{'City': 'Los Angeles', 'Name': 'Jessica', 'email': 'jessica@email.com'}
]
[iter(lst)] * len(keys)
将从列表中一次返回3个值的块。然后zip(keys, values)
将生成包含键和对应值的元组迭代器。最后,dict()
会将其转换为要插入newlst
的字典。这将循环直到列表用尽。
答案 1 :(得分:4)
在这里。
Click
输出:
lst = ['James','New York','james@email.com','Matt','San Francisco','matt@email.com','Jessica','Los Angeles','jessica@email.com']
newlst = []
for i in xrange( 0, len(lst), 3 ):
d = {}
d['Name'] = lst[i]
d['City'] = lst[i+1]
d['Email'] = lst[i+2]
newlst.append( d )
print newlst
使用理解:
[{'City': 'New York', 'Email': 'james@email.com', 'Name': 'James'},
{'City': 'San Francisco', 'Email': 'matt@email.com', 'Name': 'Matt'},
{'City': 'Los Angeles', 'Email': 'jessica@email.com', 'Name': 'Jessica'}]