Python 中的映射名称

Mapping names in Python

我得到了以下词典列表:

names = [
    {'first_name': 'Jane', 'last_name': 'Doe'},
    {'first_name': 'John', 'last_name': 'Kennedy'},
    {'first_name': 'Ada', 'last_name': 'Lovelace'}
]

a 部分是 return 全名数组,我按如下方式进行:

[user['first_name'] +' '+ user['last_name'] for user in names]

它return编辑了以下内容:

['Jane Doe', 'John Kennedy', 'Ada Lovelace']

b 部分是现在做上面同样的事情,只是 return 一个字典列表,'name' 是键。结果应该是: python

[{'name':'Jane Doe'},{'name':'John Kennedy'},{'name': 'Ada Lovelace'}]

能想到的我都试过了。从尝试更改密钥,到改回列表,然后再改回字典。我是 Python 的新手,如有任何帮助,我将不胜感激。

将您的列表理解调整为以下内容:

names = [
    {'first_name': 'Jane', 'last_name': 'Doe'},
    {'first_name': 'John', 'last_name': 'Kennedy'},
    {'first_name': 'Ada', 'last_name': 'Lovelace'}
]

result = [{'name':d['first_name']+' '+ d['last_name']} for d in names]
print(result)

输出:

[{'name': 'Jane Doe'}, {'name': 'John Kennedy'}, {'name': 'Ada Lovelace'}]

以下 comprehension using join 将起作用:

result = [{'name': ' '.join((d['first_name'], d['last_name']))} for d in names]
# [{'name': 'Jane Doe'}, {'name': 'John Kennedy'}, {'name': 'Ada Lovelace'}]
[{'name': '{first_name} {last_name}'.format(**n)} for n in names]
list(map(lambda d: {'name': ' '.join((d['first_name'], d['last_name']))},names))