在单独的行中列出理解输出

时间:2019-04-06 19:58:21

标签: python list-comprehension

我希望每对(键,值)都打印在与列表理解不同的一行上,

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()会干扰无法承受的值顺序。

3 个答案:

答案 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                                                                                                                                                                                         
}