你能把字典键按字母顺序排列成一个列表变量,并用一个特定的输出打印出来吗?

2024-03-29 01:39:29 发布

您现在位置:Python中文网/ 问答频道 /正文

下面给出的是一个正确格式的按字母顺序排列的键和值列表,但是有没有一种方法可以将按字母顺序排列的键和值迭代到一个列表变量中并打印出来,以便输出看起来与下面给出的输出完全相同?我已经回顾了一些类似的问题;我仍然不确定sort()是否真的创建了一个列表变量,如果我愿意的话,可以进一步操作它。你知道吗

def readFile(fileName):
    fileIn = open(fileName, "r")
    letterFrequency = {}
    for line in fileIn:                             
        line = line.strip()
        for letter in line:
            if letter.isalpha() is True:         
                if letter not in letterFrequency:      
                    letterFrequency[letter.lower()] = 1
                else:                                  
                    letterFrequency[letter.lower()] += 1
            else:
                pass
fileIn.close()
return letterFrequency

def main():
    fileName = input("What is the name of the file? ")
    letterDict = readFile(fileName)      
    for letter in sorted(letterDict):
        print(letter, letterDict[letter])



main()

以上输出:

a 102
b 11
c 31
d 58
e 165
f 27
g 2
h 80 
i 17
k 3
l 42
m 13
n 63
o 93
p 15
q 1
r 79
s 44
t 60
u 21
v 24
w 21
y 10

Tags: in列表forifisdef字母line
2条回答

我创建了一个列表,对列表进行排序,然后从字典中打印,从排序的列表中提取关键字名称。至于效率、必要性等,这超出了我的知识范围。你知道吗

我就是这样解决问题的:

def readFile(fileName):
    fileIn = open(fileName, "r")
    letterFrequency = {}
    for line in fileIn:                                         
        line = line.strip()
        for letter in line:
            if letter.isalpha() == True:                        
                if letter.lower() not in letterFrequency:       
                    letterFrequency[letter.lower()] = 1
                else:                                          
                    letterFrequency[letter.lower()] += 1
            else:
                pass
    fileIn.close()
    return letterFrequency


def sortKeys(dictionary):
    listNew = list(dictionary)
    listNew.sort()
    return listNew


def main():
    fileName = input("What is the name of the file you are trying to process? ")
    letterDict = readFile(fileName)    
    listNew = sortKeys(letterDict)
    for key in listNew:
        print(key, letterDict[key])


main()
d = {"a": 5, "n": 2, "z": 1, "c": 3, "b": 0}

t = tuple((k, d[k]) for k in sorted(d.keys()))
print(t)
# (('a', 5), ('b', 0), ('c', 3), ('n', 2), ('z', 1))

注意,这里不需要tuple()调用;没有它,您将得到一个(更高效的)生成器。在这个例子中,我们可以很容易地看到结果。你知道吗

相关问题 更多 >