我的命令是,
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','')])
但是我没有像我预期的那样得到输出。
答案 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()))