Re-defining a dict key value

Question:

This code doesn’t work – is there another way I can add a key-value pair with a variable as the value?

BTC_ = {"Name": "BTC", "liq": 57000}
ETH_ = {"Name": "ETH", "liq": 50000}

BTC = BTC_['liq']
ETH = ETH_['liq']

ETHp = ETH / 50000
BTCp = BTC / 50000

BTC_.update['price': BTCp ]
ETH_.update['price': ETHp ]

This code currently gives the error:

Output: builtin_function_or_method object is not subscriptable 
Asked By: Boufon

||

Answers:

Change [] to () and enclose the argument in {} (thus turning it into a dictionary):

BTC_ = {"Name": "BTC", "liq": 57000}
ETH_ = {"Name": "ETH", "liq": 50000}

BTC = BTC_['liq']
ETH = ETH_['liq']

ETHp = ETH / 50000
BTCp = BTC / 50000

BTC_.update({'price': BTCp})
ETH_.update({'price': ETHp})

print(BTC_)
print(ETH_)
Answered By: Ryan

You call functions with (arguments) after the function name, not [arguments]. And the argument to dict.update() must be a dictionary or key=value named arguments. So the correct syntax would be:

BTC_.update({'price': BTCp})
# or
BTC_.update(price=BTCp)

But if you’re just setting one element, this is normally done using assignment:

BTC_['price'] = BTCp

.update() is normally only used when you want to set multiple elements, often by merging with another dictionary.

Answered By: Barmar
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.