Jam*_* C. -1 python dictionary list-comprehension list
我有一个字符串名为LST列表包含名称,城市,地址和电子邮件地址三人的命令.我有一个名为data的字典,只包含密钥.
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
}
Run Code Online (Sandbox Code Playgroud)
我想将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"
}]
Run Code Online (Sandbox Code Playgroud)
我知道如何将单个值添加到字典中的特定键,如data ["Name"] ="James"但是如何通过使用list/dict理解或迭代来实现这一点?
这是使用列表理解的方法.我们的想法是,我们根据键的拉链和一个时间的三个值创建一个字典.
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)
Run Code Online (Sandbox Code Playgroud)
输出:
[
{'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'}
]
Run Code Online (Sandbox Code Playgroud)
[iter(lst)] * len(keys)将从列表中一次返回3个值的块.zip(keys, values)然后将生成包含键和相应值的元组迭代器.最后,dict()将其转换为要插入的字典newlst.这将循环直到列表用尽.
| 归档时间: |
|
| 查看次数: |
69 次 |
| 最近记录: |