根据其他值向字典添加值

时间:2018-02-18 05:01:24

标签: python dictionary

我有大量键的字典,每个键有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,
    },
}

感谢。

5 个答案:

答案 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']