从python dict中删除不必要的逗号

时间:2015-09-18 10:06:28

标签: python python-2.7

我的命令是,

d= {'add1':'','add2':'address2','add3':'' }

我想将所有值加入为逗号分隔的单词列表。

如果d是d= {'add1':'','add2':'address2','add3':'' }

然后输出为address2

如果d是d= {'add1':'address1','add2':'address2','add3':'' }

然后输出为address1,address2

如果d是d= {'add1':'address1','add2':'address2','add3':'address3' }

然后输出为address1,address2,address3

如果d是d= {'add1':'','add2':'','add3':'' }

然后输出为''(只是空白字符串)

我尝试了什么?

",".join([d.get('add1',''), d.get('add2',''), d.get('add3','')])

但是我没有像我预期的那样得到输出。

5 个答案:

答案 0 :(得分:4)

如果您不需要担心订单

','.join(value for value in d.itervalues() if value)

如果你的密钥总是add1等,它们很容易排序以确保订单

','.join(d[key] for key in sorted(d.keys()) if d[key])

答案 1 :(得分:2)

您可以简单地加入非空值:

','.join(v for v in d.itervalues() if v)

答案 2 :(得分:1)

你必须首先过滤掉空蜇:

",".join([x for x in d.values() if x])

答案 3 :(得分:1)

获取d.values()然后str.join() -

后,您可以使用列表理解
','.join([v for v in d.values() if v])

演示 -

>>> d= {'add1':'','add2':'address2','add3':'' }
>>> ','.join([v for v in d.values() if v])
'address2'
>>> d= {'add1':'address1','add2':'address2','add3':'' }
>>> ','.join([v for v in d.values() if v])
'address1,address2'
>>> d= {'add1':'','add2':'','add3':'' }
>>> ','.join([v for v in d.values() if v])
''
>>> d= {'add1':'address1','add2':'address2','add3':'address2' }
>>> ','.join([v for v in d.values() if v])
'address1,address2,address2'

答案 4 :(得分:0)

使用dict.values()方法和filter功能:

','.join(filter(None, d.values()))