从字典中按降序打印键和值而不导入操作符(Python)

时间:2017-11-17 03:31:28

标签: python sorting dictionary

对于我的作业,我正在编写一个程序,它将获取文件的内容,将其存储到字典中,计算并输出文件中每个单词的出现次数,并输出十个最常出现的单词。降序。

这是我的代码。我不想使用import运算符,但我正在尝试对字典中的内容进行排序。现在我的值按排序顺序打印,但不是前面的键。如何打印字典中的关键字,并附加出现次数,按降序排列?

done = False
while not done:
    try:
        print("ENTER A FILE NAME, IF NOT IN SAME FILE LOCATION AS PROGRAM, SPECIFY PATH")
        input_file_name = input("Please Enter the name of your text file: ")
        infile = open(input_file_name, "r")
        done = True

    except FileNotFoundError:
        done = False
        print("File not Found")


myDict = {}
file = infile.read()
line = file.split()
unwanted_chars = ".,!-_)(*&^%$#@:;'<>?/\{}[]|+=~`"

for symbol in line:
    word = symbol.strip(unwanted_chars)
    if word not in myDict:
        myDict[word] = 0
    myDict[word] = myDict[word] + 1

sortedValues = sorted(myDict.values())

print(myDict)
print(sortedValues)

infile.close()

2 个答案:

答案 0 :(得分:0)

这样的东西?

sortedKeysAndValues = sorted(myDict.items(), key=lambda kv: -kv[1])

然后打印,

for k, v in sortedKeysAndValues:
    print(k, v)

答案 1 :(得分:0)

Python 2

sorted_dict = sorted([(value,key) for (key,value) in myDict.iteritems()])

Python 3

sorted_dict = sorted([(value,key) for (key,value) in myDict.items()])

打印python 2 3

print([(key, value) for value, key in sorted_dict]