如果我用
中的字符串定义一个字典d = {"5": 5}
使用单引号打印显示
>> print d
>> {'5': 5}
有没有办法用双引号打印?
编辑:
完整的故事是我最初将树定义为嵌套字典,并使用json在语言之间传输。然后我决定将字典包装在一个类中,但这破坏了我在json中编码它的方法。
答案 0 :(得分:9)
是(假设你有json
模块):
>>> import json
>>> print json.dumps({'5': 5})
{"5": 5}
>>>
使用print
时的引号数量,Python docs说:
如果字符串包含a,则字符串用双引号括起来 单引号,没有双引号,否则单引号 引号。
答案 1 :(得分:1)
是:创建自己的函数,遍历dict,构建自己的字符串表示,然后打印出来。
或者,将其编码为JSON或YAML,这可能会做你想要的。
答案 2 :(得分:0)
您可以创建字典类型的子类并定义自己的字符串表示形式:
class MyDict(dict):
def __repr__(self):
return "my representation"
例如:
>>> d = MyDict()
>>> d["5"] = 5
>>> d
my representation
答案 3 :(得分:0)
你可以这样做:
>>> d = {"5": 5}
>>> for key,value in d.items():
print('{{"{0}": {1}}}'.format(key,value))
{"5": 5}
如果您想使用format
方法输出{
,请使用双{
。
以下是使用__str__
方法的解决方案:
from __future__ import print_function
from itertools import chain,izip,repeat
class singleQuoteDict(dict):
def __str__(self):
return ''.join(chain(('{'),
(j for i in izip(
chain([''],repeat(', ')),
('"{0}": {1!r}'.format(key,value) for key,value in self.items()))
for j in i),
('}')))
d = singleQuoteDict({"5": 5, "10": 10})
print(d)
输出:
{"10": 10, "5": 5}