Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何按字母顺序对词典排序?_Python_Sorting_Dictionary_Alpha - Fatal编程技术网

Python 如何按字母顺序对词典排序?

Python 如何按字母顺序对词典排序?,python,sorting,dictionary,alpha,Python,Sorting,Dictionary,Alpha,这是输出: def wordCount(inPath): inFile = open(inPath, 'r') lineList = inFile.readlines() counter = {} for line in range(len(lineList)): currentLine = lineList[line].rstrip("\n") for letter in range(len(currentLine)):

这是输出:

def wordCount(inPath):
    inFile = open(inPath, 'r')
    lineList = inFile.readlines()
    counter = {}
    for line in range(len(lineList)):
        currentLine = lineList[line].rstrip("\n")
        for letter in range(len(currentLine)):
            if currentLine[letter] in counter:
                counter[currentLine[letter]] += 1
            else:
                counter[currentLine[letter]] = 1

    sorted(counter.keys(), key=lambda counter: counter[0])
    for letter in counter:
        print('{:3}{}'.format(letter, counter[letter]))

inPath = "file.txt"
wordCount(inPath)
a  1
k  1
u  1
l  2
   12
h  5
T  1
r  4
c  2
d  1
s  5
i  6
o  3
f  2
H  1
A  1
e  10
n  5
x  1
t  5
这是我想要的输出:

def wordCount(inPath):
    inFile = open(inPath, 'r')
    lineList = inFile.readlines()
    counter = {}
    for line in range(len(lineList)):
        currentLine = lineList[line].rstrip("\n")
        for letter in range(len(currentLine)):
            if currentLine[letter] in counter:
                counter[currentLine[letter]] += 1
            else:
                counter[currentLine[letter]] = 1

    sorted(counter.keys(), key=lambda counter: counter[0])
    for letter in counter:
        print('{:3}{}'.format(letter, counter[letter]))

inPath = "file.txt"
wordCount(inPath)
a  1
k  1
u  1
l  2
   12
h  5
T  1
r  4
c  2
d  1
s  5
i  6
o  3
f  2
H  1
A  1
e  10
n  5
x  1
t  5
如何按字母顺序排列“计数器”? 我尝试过简单地按键和值排序,但它不会首先返回以大写字母开头的字母顺序 谢谢你的帮助

  12
A 1
H 1
T 1
a 1
c 2
d 1
e 10
f 2
h 5
i 6
k 1
l 2
n 5
o 3
r 4
s 5
t 5
u 1
x 1
单独做什么都不做:它返回一个根本不使用的结果(除非您使用
回忆它,但这是一种命令行实践)

与使用
.sort()
方法使用
列表
所能做的相反,您不能“就地”对字典键进行排序。但您可以在排序后的密钥版本上进行迭代:

sorted(counter.keys(), key=lambda counter: counter[0])
,key=lambda counter:counter[0]
在这里是无用的:您的密钥中只有字母

旁白:使用
集合可以大大简化整个代码。计数器可以清点字母

for letter in sorted(counter.keys()):
结果(包括空格字符):


除了将数据存储在字典中,他还可以只使用OrderedDict,这样他就不必对计数器进行排序。keys()每次打印时都会跟踪插入顺序。这和分类不一样。如果订单一开始不是排序顺序,排序会破坏订单。那么
print(k,v)
呢?@StefanPochmann:在python 2中,它将
k,v
打印为
元组
(除非您从
导入
print\u函数
),所以使用
格式
`是版本不可知的。我感谢您对代码的分解和简化。只是我们还没有学过收集,所以虽然我很想简单地使用你的简单解决方案,但我不会真正理解发生了什么