>>> d = {}
>>> s = str(d)
>>> print s
{}
我需要一个空字符串。
答案 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:
真值测试
可以测试任何对象的真值,以便在
if
或while
中使用 条件或下面的布尔运算的操作数。下列 值被视为错误:
None
False
- 任何数字类型的零,例如
0
,0.0
,0j
。- 任何空序列,例如
''
,()
,[]
。- 任何空映射,例如
{}
。- 用户定义的类的实例,如果类定义了
__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'}"