【问题标题】:insert comma after every element in list comprehension python在列表理解python中的每个元素后插入逗号
【发布时间】:2017-05-02 07:50:21
【问题描述】:

我有一些数据如下:

stats = {'a':1000, 'b':3000, 'c': 100}

我想在列表理解中的每个元素之后插入逗号,请参见下面的示例:

d = ['a',',','b',',','c',',']

如何通过正常的列表理解来做到这一点:

在下面找到示例代码:

[k + ',' for k, v in stats.iteritems()],但似乎没有得到所需的结果。

任何帮助表示赞赏 蒂亚!

【问题讨论】:

  • 您的预期结果是什么?
  • 顺序重要吗?
  • 这是因为你想将它连接到一个字符串吗?为此,我们有 join

标签: python csv list-comprehension comma


【解决方案1】:

这可以通过扁平化字典键诱导的对来完成:

d = [item for key in stats for item in (key, ',')]

另一种选择是压缩密钥和逗号并将它们链接起来:

d = list(chain(*zip(stats, repeat(','))))

【讨论】:

  • 不需要.keys()
【解决方案2】:

如果您的目标是将元素连接成一个字符串,您可以使用str.join

>>> stats = {'a':1000, 'b':3000, 'c': 100}
>>> ','.join(stats)
'a,c,b'

如果你真的想要一个尾随逗号,你可以添加它:

>>> ','.join(stats) + ','
'a,c,b,'

请注意,Python 字典是无序的:您不能确定键的输出顺序与输入的顺序相同。为此,您需要一个列表或OrderedDict

>>> stats = [('a', 1000), ('b', 3000), ('c', 100)]
>>> ','.join(key for key,value in stats)
'a,b,c'
>>> ','.join(key for key,value in stats) + ','
'a,b,c,'

如果出于某种原因,你真的想要一个字符列表:

>>> list(','.join(key for key,value in stats) + ',')
['a', ',', 'b', ',', 'c', ',']

只有当键的长度正好是一个字符时它才会起作用。不过,要遍历字符串中的字符,您甚至不需要将字符串转换为列表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    • 2015-09-11
    • 2018-12-08
    • 2015-12-20
    • 1970-01-01
    • 1970-01-01
    • 2020-01-16
    相关资源
    最近更新 更多