tables={'中国':{'人口数':14.26,'GDP':14.73},
'印度':{'人口数':13.44,'GDP':2.709},
'日本':{'人口数':1.26,'GDP':5.049},
'美国':{'人口数':3.29,'GDP':20.933},
'英国':{'人口数':0.66,'GDP':2.711},
'德国':{'人口数':0.83,'GDP':3.803}}
ls1=[]
for k,v in tables.items():
ls1.append(v)
number=[item[0] for item in ls1]
GDP=[item[1] for item in ls1]
ave=[]
for i,n in ls2(number,GDP):
ave.append(i/n)
ls3.append(k,avg)
ls3.sort(key=lambda x: x[1],reverse=True)
for c,v in ls3:
print("{}的人均GDP:{:.2f}").format(c,v)
主要错误有把字典当作列表直接用索引去引用了,没有将国名与人均GDP构成一个字典,这样改一下就可以了:
tables = {'中国': {'人口数': 14.26, 'GDP': 14.73},
'印度': {'人口数': 13.44, 'GDP': 2.709},
'日本': {'人口数': 1.26, 'GDP': 5.049},
'美国': {'人口数': 3.29, 'GDP': 20.933},
'英国': {'人口数': 0.66, 'GDP': 2.711},
'德国': {'人口数': 0.83, 'GDP': 3.803}}
ls1 = []
for k, v in tables.items():
ls1.append(v)
number = [item['人口数'] for item in ls1]
GDP = [item['GDP'] for item in ls1]
ave = []
for i, n in zip(number, GDP):
ave.append(n/i)
dic=dict(zip(tables.keys(),ave))
ls2=sorted(dic.items(),key=lambda x: x[1], reverse=True)
for c,v in ls2:
print("{}的人均GDP:{:.2f}".format(c, v))
如果对你有帮助,请点击一下我回答的右上方采纳按钮。