如何在词典列表中添加新的键和值?

时间:2019-01-15 17:21:02

标签: django python-3.x

我有一个词典列表

m = [ {'currency_id':1,'price':20},{'currency_id':2,'price':25},{'currency_id':1,'price':44}]

1表示美元,2表示比特币。因此,我必须检查每本词典中的货币ID,如果价格以美元为单位,那么我必须将usd转换为比特币并添加一个新的密钥,值对'bitcoin_price':1.0或如果价格为比特币,那么我必须对其进行转换并添加新的键值对“ usd_price”:33。最后,我想要这样的列表

m = [ {'currency_id':1,'price':20,'bitcoin_price':1.0},{'currency_id':2,'price':25,'usd_price':33},{'currency_id':1,'price':44,'bitcoin_price':1.0}]

我已经尝试过一些东西,但是好像迷路了。

m = [{'a':1,'b':2,'c':3},{'d':1,'f':3,'t':6}]
for i,k in enumerate(m):
    for w in k:
        if k[w]==1:
            k['as']=5555

        else:
            k['l']=23

1 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:

new_m = []
bitcoin_usd_price = 5000

for obj in m:
        new_m.append(obj)
        if obj['currency_id'] == 2:
            new_m[-1]['usd_price'] = obj['price'] * bitcoin_usd_price
        else:
            new_m[-1]['bitcoin_price'] = obj['price'] / bitcoin_usd_price
m = new_m

现在只需将bitcoin_usd_price分配给实际的货币兑换率(美元中的比特币成本)。

UPD:动态更改m列表将是一个更整洁的解决方案:

bitcoin_usd_price = 5000

for i in range(len(m)):
        if m[i]['currency_id'] == 2:
            m[i]['usd_price'] = m[i]['price'] * bitcoin_usd_price
        else:
            m[i]['bitcoin_price'] = m[i]['price'] / bitcoin_usd_price