我正在研究如何使用Python处理csv文件(这是我的新手),并下载了the following table,其中有89个条目获得了女女演员的各种奥斯卡奖。当我想要特定的排序时,我很难解决在字典中循环键/值的问题……在这种情况下,是按女演员的年龄来排序。
我尝试了一些在此处搜索的解决方案,但是无法理解或将其应用于我的代码(目前非常简单)。我所知道的是,我有带字典的OrderedDict对象,并且每个键,值都有一个元组,例如:
[OrderedDict([('Index', '1'), ('Year', '1928'), ('Age', '22'), ('Name', 'Janet Gaynor'), ('Movie', 'Seventh Heaven, Street Angel and Sunrise: A Song of Two Humans')]).
当前代码仅将所有内容打印到控制台:
import csv
results = []
with open('oscar_age_female.csv') as File:
reader = csv.DictReader(File)
for row in reader:
results.append(row)
print(results)
答案 0 :(得分:0)
为了正确读取csv,您需要添加skipinitialspace,否则会错误地解析出名称中包含逗号的电影。
import csv
results = []
with open('oscar_age_female.csv') as File:
reader = csv.DictReader(File, skipinitialspace=True)
for row in reader:
results.append(row)
在添加上述步骤后,为了通过键对词典列表进行排序很简单:
print(sorted(results, key=lambda k: k['Age'])) # Youngest to oldest
print(sorted(results, key=lambda k: k['Age'], reverse=True)) # Oldest to youngest
Here是按字典键对字典进行排序的好帖子