按给定的键值排序字典

时间:2019-04-15 00:18:39

标签: python csv

我正在研究如何使用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)

1 个答案:

答案 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是按字典键对字典进行排序的好帖子