我是Python的新手,所以如果这个问题看起来有点幼稚,我道歉。我正在为我的comp sci类做一个最终项目,涉及到可视化一些数据,但是我在做的时候遇到了一些困难。
基本上,我使用的是一个CSV文件(您可以找到here),其中包含每个国家在29年期间报告的排放数据--但我只想可视化每个给定年份前五个排放国家的数据。
counter = 0
for i in range(30):
global_emissions = {}
for country in dataset:
'''dataset is a list of country-specific dictionaries; a key value for every year (e.g. '1991') corresponds to a float representing CO2 emissions in kt.'''
key = str(1990 + counter)
emissions = country[key]
global_emissions[country['COUNTRY']] = emissions
sorted_emissions = {}
for i in sorted(global_emissions.values()): # this loop is just here to match keys to sorted values
for k in global_emissions.keys():
if global_emissions[k] == i:
sorted_emissions[k] = global_emissions[k]
counter += 1
任何一年的sorted_emissions
列表都是一组按值升序排列的键值对,最后是污染最严重的国家,例如1990年,它看起来像这样:...'Germany': 955310.0, 'Japan': 1090530.0, 'Russian Federation': 2163530.0, 'China': 2173360.0, 'United States': 4844520.0}
对于29年来出版的字典,我想把最后五个元素分离出来--但是由于污染最严重的国家的键每年都会改变,我不能只通过它们的键来访问它们。
我试着用数字切片来索引它们(比如sorted_emissions[-1]
),但是这在字典中不起作用。有没有解决这个问题的方法,或者更好的方法?任何建议都将受到感谢。非常感谢!
1条答案
按热度按时间luaexgnf1#
因为字典在默认情况下是不排序的,也就是说,字典中键-值对的位置没有任何意义,所以不能通过索引访问任何项。但是,可以将字典转换为元组列表,其中键是元组的第一个元素,值是元组的第二个元素。然后,可以编写代码来始终访问元组中的第二个元素(即,在位置[1])并对这些值进行排序。
我希望我正确地理解了你的问题,这对我有帮助