如何管理包含三个项的Python字典并添加最后一项?
我在Python中有一个字典,长得像这样:
x = {国家:{城市:人口}:......}
我想创建一个新的字典,像这样 y = {国家:城市总人口},其中城市总人口是每个国家所有城市的人口加起来的总和,但我真的不知道该怎么做。
我试过这样做:
for country in x:
for city, population in x[country].iteritems():
if not country in y:
y[country] = {}
y[country] += population
我检查了一个只有一个键和一个值的字典,但我不太明白如何处理有三个项目的字典……请帮帮我!!!! :)
4 个回答
0
你想要的是一个新的字典,这个字典的键是原来的键,而它的值是当前值字典中所有值的总和。
y = dict((c[0], sum(c[1].values())) for c in x.iteritems())
1
我假设你想要的不仅仅是每个国家的城市人口总和:
>>> attributes = ['population', 'gdp', 'murders']
>>> x = {'usa': {'chicago': dict(zip(attributes, [10, 100, 1000])), 'nyc':dict(zip(attributes, [20, 200, 2000]))}, 'china': {'shanghai': dict(zip(attributes, [9, 90, 900])), 'nagasaki': dict(zip(attributes, [2, 20, 200]))}}
>>> x
{'china': {'shanghai': {'gdp': 90, 'murders': 900, 'population': 9}, 'nagasaki': {'gdp': 20, 'murders': 200, 'population': 2}}, 'usa': {'nyc': {'gdp': 200, 'murders': 2000, 'population': 20}, 'chicago': {'gdp': 100, 'murders': 1000, 'population': 10}}}
>>> for country, cities in x.iteritems():
y[country] = {attr:0 for attr in attributes}
for city, attributes in cities.iteritems():
for attribute, value in attributes.iteritems():
y[country][attribute] += value
>>> y
{'china': {'gdp': 110, 'murders': 1100, 'population': 11}, 'usa': {'gdp': 300, 'murders': 3000, 'population': 30}}
2
那么,怎么样呢:
y = { }
for country, cities in x.iteritems():
y[country] = sum(cities.values())