gpt4 book ai didi

python - 在python中对两个列表进行排序?

转载 作者:太空宇宙 更新时间:2023-11-03 12:32:26 26 4
gpt4 key购买 nike

我正在计算文本中单词的出现次数,我有两个列表:第一个包含单词,第二个包含出现的次数。

所以在分析结束时我有类似的东西

listWords : ["go", "make", "do", "some", "lot"]
listOccurrences: [2, 4, 8, 1, 5]

我想按照 listOccurrences DESC 对这两个列表进行排序,所以我会:

listWords : ["do", "lot", "make", "go", "some"]
listOccurrences: [8, 5, 4, 2, 1]

有什么办法可以做到这一点吗?或者你知道比两个列表更“自然”的其他方式吗? (就像一个单独的“列表”,其中每个出现的地方都由一个词引用)

最佳答案

>>> listWords = ["go", "make", "do", "some", "lot"]
>>> listOccurrences = [2, 4, 8, 1, 5]
>>> listTmp = zip(listOccurrences, listWords)
>>> listTmp
[(2, 'go'), (4, 'make'), (8, 'do'), (1, 'some'), (5, 'lot')]
>>> listTmp.sort(reverse=True)
>>> listTmp
[(8, 'do'), (5, 'lot'), (4, 'make'), (2, 'go'), (1, 'some')]
>>> zip(*listTmp)
[(8, 5, 4, 2, 1), ('do', 'lot', 'make', 'go', 'some')]
>>> listOccurrences, listWord = zip(*listTmp)

请注意,键值对(此处为:word:count)的明显数据类型是 dict。 FWIW 你可能想看看 collections.Counter

编辑:为了完整起见:如果你想将所有这些塞进单行语句(就可读性而言,这可能不是一个好主意,但那是另一回事了):

>>> listWords = ["go", "make", "do", "some", "lot"]
>>> listOccurrences = [2, 4, 8, 1, 5]
>>> listOccurrences, listWords = zip(*sorted(zip(listOccurrences, listWords), reverse=True))
>>> listWords
('do', 'lot', 'make', 'go', 'some')
>>> listOccurrences
(8, 5, 4, 2, 1)

关于python - 在python中对两个列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30212452/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com