我有大量键的字典,每个键有15个值。 以下是字典样本
city_info = {
'new york': {
'bus': 4175000,
'car': 2869717,
'income avg': 3081055,
'pop': 40000000,
},
'memphis': {
'bus': 4175000,
'car': 2869717,
'income avg': 3081055,
'pop': 400000,
},
}
其中有800多个城市或钥匙。 我想做的基本上是,增加值是其他值的比例所以上面的字典会增加一个名为"总线比率"流行/总线价值的比率。
所以,新词典看起来像
city_info_new = {
'new york': {
'bus': 4175000,
'car': 2869717,
'income avg': 3081055,
'pop': 40000000,
'bus_ratio': 9.58,
},
'memphis': {
'bus': 4175000,
'car': 2869717,
'income avg': 3081055,
'pop': 400000,
'bus_ratio': 0.095,
},
}
感谢。
答案 0 :(得分:3)
只需迭代所有字典值并添加新字段bus_ratio
:
for value in city_info.values():
value['bus_ratio'] = value['pop'] / value['bus']
答案 1 :(得分:3)
要创建一个全新的字典,您可以使用字典理解:
city_info = {
'new york': {
'bus': 4175000,
'car': 2869717,
'income avg': 3081055,
'pop': 40000000,
},
'memphis': {
'bus': 4175000,
'car': 2869717,
'income avg': 3081055,
'pop': 400000,
},
}
city_info_new = {a:{**b, 'bus_ratio':round(b['pop']/float(b['bus']), 2)} for a, b in city_info.items()}
输出:
{'new york': {'bus': 4175000, 'car': 2869717, 'income avg': 3081055, 'pop': 40000000, 'bus_ratio': 9.58}, 'memphis': {'bus': 4175000, 'car': 2869717, 'income avg': 3081055, 'pop': 400000, 'bus_ratio': 0.1}}
答案 2 :(得分:2)
你试过这个吗?
def Ratio(city):
return city['pop']/city['bus']
for city,vals in city_info.items():
vals['bus_ratio']=Ratio(vals)
答案 3 :(得分:1)
你也可以在这里使用dict.update
:
for city in city_info:
ratio = city_info[city]['pop'] / city_info[city]['bus']
city_info[city].update({'bus_ratio': ratio})
答案 4 :(得分:1)
您可以迭代字典键,如下所示:
for city in city_info:
city_info[city]['bus_ratio'] = city_info[city]['pop'] / city_info[city]['bus']