从python dict中删除不必要的逗号
我的口述是从python dict中删除不必要的逗号,python,python-2.7,Python,Python 2.7,我的口述是 d= {'add1':'','add2':'address2','add3':'' } 我希望将所有值作为逗号分隔的单词列表连接起来 如果d是d={'add1':'','add2':'add2','add3':''} 然后输出将是address2 如果d是d={'add1':'address1','add2':'address2','add3':''} 然后输出将是address1,address2 如果d是d={'add1':'address1','add2':'address2
d= {'add1':'','add2':'address2','add3':'' }
我希望将所有值作为逗号分隔的单词列表连接起来
如果d是d={'add1':'','add2':'add2','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','')])
但我并没有得到我预期的结果 您可以简单地连接非空值:
','.join(v for v in d.itervalues() if v)
如果你不需要担心秩序的话
','.join(value for value in d.itervalues() if value)
如果您的密钥总是add1等,它们将很容易排序,以确保秩序
','.join(d[key] for key in sorted(d.keys()) if d[key])
您必须首先过滤掉空的stings:
",".join([x for x in d.values() if x])
您可以在获取
d.values()
后使用列表理解,然后使用str.join()
-
演示-
>>> 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'
使用dict.values()
方法和filter
函数:
,'.join(筛选器(None,d.values())
您的第一个示例不起作用(语法无效)。您需要用值替换…
中的值。谢谢@luator,我错过了。:)
>>> 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'