Вывести вывод для понимания в отдельной строке - PullRequest
0 голосов
/ 06 апреля 2019

Я хочу, чтобы каждая пара (ключ, значение) была напечатана на отдельной строке из этого списка,

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 ]

1 голос
/ 06 апреля 2019

Хотите что-то подобное?

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()]
  ) + '}')

Обратите внимание на квадратные скобки внутри отпечатка.Они обозначают понимание списка (в то время как фигурные скобки словарь понимание).В этом коде вы можете заменить понимание списка генератором (круглые скобки) с тем же конечным результатом.

',\n'.join(list) вставляет ',\n' между элементами списка, обеспечивая требуемый результат.

1 голос
/ 06 апреля 2019

Словари не имеют порядка, поэтому, если вы хотите, чтобы ключи сортировались как [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                                                                                                                                                                                         
} 
1 голос
/ 06 апреля 2019

Вы можете сделать свою собственную функцию печати / форматирования только для этого:

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.

...