【发布时间】:2021-12-24 20:27:40
【问题描述】:
我有一个包含许多列和行的 CSV 文件,我想从具有重复项的特定行(代码中显示的第 12 行)创建一个字典。我已经设法做到了,但是,我不知道如何对其进行排序。我尝试在创建字典之前和之后对其进行排序。 我通过 VSCode 使用 python。
这是我的代码:
import csv
with open("FILENAME", newline="", encoding="iso-8859-1") as csvfile:
reader = csv.reader(csvfile, delimiter=";")
next(reader)
species_count ={}
for row in reader:
species = row[12]
species_count[species] = species_count.get(species,0)+1
for num in species_count:
print(f"{num}: {species_count[num]}")
当前结果示例:
A: 5922
C: 5837
D: 6136
B: 12
E: 1
等等
有没有简单的方法来做到这一点? 任何帮助表示赞赏! (我是初学者)
编辑: 我想按字母顺序排序,所以:
A: 5922
B: 12
C: 5837
etc
【问题讨论】:
-
你希望结果是什么?
-
我希望它按字母顺序按第一个值排序。可能应该在我的问题中指定,对不起!
-
row[12]不是第 12 行。它是当前行中的第 12 元素。换句话说,您是从第 12 列中获取元素,而不是从第 12 行中获取元素。 -
所以从字典中获取键列表并对其进行排序。
-
另外,请注意
dict的子类Counter在模块collections中,它基本上实现了所有的计数逻辑,因此您不必自己编写。您可以使用from collections import Counter; species_count = Counter(row[12] for row in reader)并在一行代码中完成所有操作。