Форматирование значений ключей с помощью map () с лямбда-функцией - PullRequest
2 голосов
/ 29 марта 2019

Учитывая список сотрудников, определенный в ячейке ниже, обработайте список словарей, чтобы создать список имен сотрудников, отформатированный как имя, фамилия, фамилия, например, г-н Джонатан Кальдерон и т. Д.

Пока я могу распечатывать названияно вот и все ...

моя работа:

new_list2 = list(map(lambda x: x["title"], employees)) 
print(new_list2)

вывод:

['Mr', 'Mr', 'Mrs', 'Ms']

Список словарей:

employees = [
    {
        "email": "jonathan2532.calderon@gmail.com",
        "employee_id": 101,
        "firstname": "Jonathan",
        "lastname": "Calderon",
        "title": "Mr",
        "work_phone": "(02) 3691 5845"
    },
    {
        "email": "christopher8710.hansen@gmail.com",
        "employee_id": 102,
        "firstname": "Christopher",
        "lastname": "Hansen",
        "title": "Mr",
        "work_phone": "(02) 5807 8580"
    },
    {
        "email": "isabella4643.dorsey@gmail.com",
        "employee_id": 103,
        "firstname": "Isabella",
        "lastname": "Dorsey",
        "title": "Mrs",
        "work_phone": "(02) 6375 1060"
    },
    {
        "email": "barbara1937.baker@gmail.com",
        "employee_id": 104,
        "firstname": "Barbara",
        "lastname": "Baker",
        "title": "Ms",
        "work_phone": "(03) 5729 4873"
    }
]

ожидаетсявывод:

Mr Jonathan Calderon
Mr Christopher Hansen
Mrs Isabella Dorsey
Ms Barbara Baker

Ответы [ 2 ]

3 голосов
/ 29 марта 2019

Вы можете использовать понимание списка и получить интересующие значения из каждого словаря, используя operator.itemgetter:

from operator import itemgetter
l = ['title', 'firstname', 'lastname']

[' '.join(itemgetter(*l)(i)) for i in employees]

Вывод

['Mr Jonathan Calderon', 'Mr Christopher Hansen', 'Mrs Isabella Dorsey', 'Ms Barbara Baker']

Или, если вы предпочитаете, с map:

[' '.join(map(lambda x: i.get(x), l)) for i in employees]
# ['Mr Jonathan Calderon', 'Mr Christopher Hansen', 'Mrs Isabella Dorsey', 'Ms Barbara Baker']
1 голос
/ 30 марта 2019

Поскольку ОП запросил map(), здесь, сэр, это решение, использующее его и только его (нет необходимости в импорте дополнительных библиотек):

result = map(lambda x: [x['title'],x["firstname"],x["lastname"]],employees)
print(*["{} {} {}\n".format(a,b,c) for a,b,c in result], sep="")

Output:
Mr Jonathan Calderon
Mr Christopher Hansen
Mrs Isabella Dorsey
Ms Barbara Baker
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...