以下内容为我提供了按正确格式显示的键和值的字母列表,但是有一种方法可以将按字母顺序排列的键和值迭代到列表变量中,并打印出列表,以便输出看起来完全相同如下面的输出所示?我已经复习了一些类似的问题;我仍然不确定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
答案 0 :(得分:1)
Var example = Nav.Document.GetElementsByTagName("span");
请注意,您不需要在这里进行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))
呼叫;没有它,您将获得一个(更高效的)生成器。在此示例中可以轻松查看结果。
答案 1 :(得分:0)
我创建了一个列表,对列表进行了排序,然后从字典中打印出来,从已排序的列表中拉出了键名。现在,关于效率,必要性等,这超出了我的知识范围。
这是我解决问题的方式:
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()