【问题标题】:Mapping names in Python在 Python 中映射名称
【发布时间】:2018-03-11 07:14:18
【问题描述】:

我得到了以下字典列表:

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

a部分是返回一个全名数组,我做了如下:

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

它返回以下内容:

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

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

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

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

【问题讨论】:

  • 如果您有一个字典列表,其中每个字典只包含一个元素,请考虑一下,您是否应该只使用一个字典?
  • 如果你必须[{'name':'{} {}'.format(name['first_name'],name['last_name'])} for name in names]
  • @Chris_Rands 感谢您的建议和帮助

标签: python list mapping list-comprehension names


【解决方案1】:

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

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'}]

【讨论】:

  • @MatthiasBurger,再次查看问题:OP 确实发布了代码,它是列表理解[user['first_name'] +' '+ user['last_name'] for user in names]
  • @RomanPerekhrest 谢谢!我一到课就试试。
【解决方案2】:

以下comprehension 使用join 将起作用:

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

【讨论】:

    【解决方案3】:
    [{'name': '{first_name} {last_name}'.format(**n)} for n in names]
    

    【讨论】:

      【解决方案4】:
      list(map(lambda d: {'name': ' '.join((d['first_name'], d['last_name']))},names))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多