如何使字典的每个键值在新行上打印?

问题描述 投票:13回答:6

如果我有这样的给定字典:

{'avglen': 4.419354838709677, 'count:': 93, 'mosts:': 'your', 'longs:': ['stretched'], 'shorts:': ['i', 'a'],}

如何在新行上打印每个键值?

很好,但是这里是我用来获取此词典的代码。我几乎将每个键值添加到字典中。所以我找出了最短的词,然后将其添加到字典中。我也注意到有多余的冒号。但我知道了值的一部分,可以使用.replace()将其取走??

def build_report(freq):
    report={}
    freq_list=list(freq.keys())
    keys=sorted(freq, key=len)
    #for shorts:
    shortest=keys[0]
    shortest = [keys[0]]
    for key in keys[1:]:
        if len(key) == len(shortest[0]):
            shortest.append(key)
        else:
            break   
    report["shorts:"]=shortest
    #for longs:
    longest=keys[-1]
    longest = [keys[-1]]
    for key in reversed(keys[:-1]):
        if len(key) == len(longest[0]):
            longest.append(key)
        else:
            break
    report["longs:"]=longest
    #for mode:
    val_list=list(freq.values())
    sorted_val_list=sorted(val_list)
    mode=sorted_val_list[-1]
    for key in freq.keys():
        if freq[key]==mode:
            mode_word=key
    report["mosts:"]=mode_word
    # for word count:
    wordcount=len(list(freq.keys()))
    report["count:"]=wordcount
    #for average length:
    avg=list(freq.keys())
    average=sum(map(len,avg))/len(avg)
    report["avglen"]=average
    #for freq dictionary of word to word count
    freqs=freq
    report["freqs:"]=freqs
    return report

[如果我有给定的字典,例如:{'avglen':4.419354838709677,'count:':93,'mosts:':'your','longs:':['stretched'],'shorts:': ['i','a'],}如何在新的...上打印每个键值...

python python-3.x dictionary
6个回答
23
投票

如果您确实不想导入pprint但希望它“看起来像”字典,则可以这样做:


9
投票

您可能正在寻找漂亮的打印机标准库pprint。例如:


3
投票

迭代dict.items并打印:


3
投票

对于那些使用>>> import pprint >>> pprint.pprint(d) {'avglen': 4.419354838709677, 'count:': 93, 'longs:': ['stretched'], 'mosts:': 'your', 'shorts:': ['i', 'a']} 的用户,想知道为什么词典仍然不会将每个条目打印到新行:可能是词典条目或整个词典都太短


1
投票

在过去大约六个问题中,您似乎正在将这本可怜的词典用作文本索引的对象。为什么不让它成为一个适当的课程?


0
投票

为了快速打印,您可以使用字符串替换将换行符添加到输出中。如果字典中包含列表,则此方法不会产生漂亮的结果;这些列表还将获得换行符。

© www.soinside.com 2019 - 2024. All rights reserved.