我希望每对(键,值)都打印在与列表理解不同的一行上,
print({'Doc. ' + k + '.txt: ':v for k, v in dict.items()})
例如:
{'Doc. 23.txt: ': 0.027716832767124815,
'Doc. 7.txt: ': 0.016852886586198594,
'Doc. 17.txt: ': 0.014667013392619908,
'Doc. 37.txt: ': 0.01410963740876677}
我尝试串联'\ n',在这里无效。 感谢您的协助。
P.S:使用pprint()
会干扰无法承受的值顺序。
答案 0 :(得分:1)
您可以为此创建自己的打印/格式功能:
def my_print_function(d, prefix="", suffix=""):
print("{", end="")
for i, (k, v) in enumerate(d.items()):
if i == 0:
print("'{}{}{}': {},".format(prefix, k, suffix, v))
else:
print(" '{}{}{}': {},".format(prefix, k, suffix, v))
print("}")
my_print_function(my_dict, "Doc. ", ".txt: ")
# {'Doc. 23.txt: ': 0.027716832767124815,
# 'Doc. 7.txt: ': 0.016852886586198594,
# 'Doc. 17.txt: ': 0.014667013392619908,
# 'Doc. 37.txt: ': 0.01410963740876677,
# }
据我所知,您将无法理解。另外,您应该避免命名dict
,因为这会覆盖dict
构造函数。
答案 1 :(得分:1)
您想要这样的东西吗?
mydict = {23: 0.027716832767124815,
7: 0.016852886586198594,
17: 0.014667013392619908,
37: 0.01410963740876677}
print('{' + ',\n'.join(
["'Doc. {}.txt': {}".format(k, v) for k, v in mydict.items()]
) + '}')
请注意打印内容中的方括号。它们表示列表理解(大括号是 dictionary 理解)。在此代码中,您可以用生成器理解(圆括号)替换列表理解,并获得相同的最终结果。
',\n'.join(list)
在列表的元素之间插入',\n'
,提供您要求的结果。
答案 2 :(得分:1)
字典没有顺序,因此,如果您希望键按[23, 7, 17, 37]
进行排序,则可以执行以下操作:
>>> import json
>>> from collections import OrderedDict
>>>
>>> order = ["23", "7", "17", "37"]
>>> d = {
... "23": 0.0277,
... "7": 0.0168,
... "17": 0.0146,
... "37": 0.0141
... }
>>> sorted_d = OrderedDict([("Doc." + k + ".txt:", d[k]) for k in order])
>>> print(json.dumps(sorted_d, indent=4))
{
"Doc.23.txt:": 0.0277,
"Doc.7.txt:": 0.0168,
"Doc.17.txt:": 0.0146,
"Doc.37.txt:": 0.0141
}