【问题标题】:How to join strings in an object list如何在对象列表中加入字符串
【发布时间】:2014-07-21 05:30:38
【问题描述】:

', '.join(strings) 可用于连接列表中的所有字符串。

现在我有一个存储对象的列表,我想将它们的名称连接在一起。例如:

>>> a=[{'name': 'John', 'age': '21'},{'name': 'Mark', 'age': '25'}]
>>> a[0]['name'] + ', ' + a[1]['name']
'John, Mark'

有没有像上面join() 这样的简单方法来做到这一点?

【问题讨论】:

  • ', '.join([x['name'] for x in a]) 我怀疑还有什么更简单的。
  • strings.join(', ') 来自JS,对吧?
  • @vaultah 从某种意义上说,删除答案中的方括号会更简单,只需使用','.join(x['name'] for x in a)
  • @RayToal 括号会在 join 的情况下产生性能差异。
  • 谢谢@vaultah,你应该把它作为答案发布,即使你可能认为它很简单:) 你能详细说明为什么它有性能差异吗?

标签: python string list dictionary


【解决方案1】:

您有字典列表而不是对象列表。我们可以像这样把他们联合起来

print ", ".join(d["name"] for d in a)

d["name"] for d in a 称为生成器表达式,str.join 会从生成器表达式中获取值,并将它们与中间的, 连接起来。

但是,如果字典列表太大,那么我们可以自己创建一个字符串列表,然后像这样将它传递给str.join

print ", ".join([d["name"] for d in a])

这里,[d["name"] for d in a] 被称为列表理解,它遍历 a 并创建一个包含所有 names 的新列表,我们传递该列表以与 , 连接。


我刚刚注意到 cmets 部分的讨论。请查看this answer 了解为什么 List Comprehension 在字符串连接方面优于 GenExp。

【讨论】:

    猜你喜欢
    • 2017-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-20
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多