将空字典转换为空字符串

时间:2016-02-14 08:03:36

标签: python string dictionary

>>> d = {}
>>> s = str(d)
>>> print s
{}

我需要一个空字符串。

5 个答案:

答案 0 :(得分:15)

您可以使用以下最短的方式执行此操作,因为空字典为False,并通过Boolean Operators执行。

>>> d = {}
>>> str(d or '')
''

或没有str

>>> d = {}
>>> d or ''
''

如果d不是空字典,请将其转换为str()

字符串
>>> d['f'] = 12
>>> str(d or '')
"{'f': 12}"

答案 1 :(得分:8)

当您尝试将其转换为bool对象时,空的dict对象为False。但是如果它有什么东西,那就是True。像空列表,空字符串,空集和其他对象:

>>> d = {}
>>> d
{}
>>> bool(d)
False
>>> d['foo'] = 'bar' 
>>> bool(d)
True

所以很简单:

>>> s = str(d) if d else ''
>>> s
"{'foo': 'bar'}"
>>> d = {}
>>> s = str(d) if d else ''
>>> s
''

或者只是if not d: s = ''如果你不需要s当字典中存在某些内容时就成为字典的字符串。

答案 2 :(得分:2)

查看docs

  

真值测试

     

可以测试任何对象的真值,以便在ifwhile中使用   条件或下面的布尔运算的操作数。下列   值被视为错误:

     
      
  • None
  •   
  • False
  •   
  • 任何数字类型的零,例如00.00j
  •   
  • 任何空序列,例如''()[]
  •   
  • 任何空映射,例如{}
  •   
  • 用户定义的类的实例,如果类定义了__bool__()   或__len__()方法,当该方法返回整数零或bool时   价值False
  •   

因此,根据该粗体规则,您的空字典变为False。所以你可以使用:

d = {}
if not d:
   s = ''
else:
   s = str(d)

答案 3 :(得分:0)

将字典中的每个项目转换为字符串,然后使用空字符串

连接它们
>>> ''.join(map(str,d))

答案 4 :(得分:0)

我想提出子类化dict并覆盖__str__方法:

class DontForgetToDoYourTaxes(dict):
    def __str__(self):
        return self or ""

然后使用:

d = DontForgetToDoYourTaxes()
print d  # ""
d["ayy"] = "lmao"
print d  # "{'ayy': 'lmao'}"