基于条件关联合并Python字典值:添加资产ETH价格字段
给Python资产字典添加对应ETH价格字段的实现方案
嘿,这事儿其实挺简单的,我来给你一步步说明怎么把两个字典合并成你想要的结构~
首先先明确我们的输入:
bal = { u'POWR': 5.341, u'GXS': 1.758285, u'NEO': 20.1805 } prices_eth = { u'POWRETH': 0.00161001, u'GXSETH': 0.00974900, u'NEOETH': 0.09775400 }
我们的目标是把bal里每个资产的数值,替换成包含balance(原数值)和eth price(对应prices_eth里的价格)的字典结构。
方法一:直接修改原字典
如果你不需要保留原来的bal结构,可以直接遍历修改它:
for asset in bal: # 拼接prices_eth中对应的键名(资产名 + "ETH") price_key = asset + 'ETH' # 替换原资产值为新的字典结构 bal[asset] = { "balance": bal[asset], "eth price": prices_eth.get(price_key, 0) # 用get避免键不存在时报错,默认值可按需调整 }
运行这段代码后,bal就会变成你想要的样子:
print(bal) # 输出结果: # { # u'POWR': {'balance': 5.341, 'eth price': 0.00161001}, # u'GXS': {'balance': 1.758285, 'eth price': 0.009749}, # u'NEO': {'balance': 20.1805, 'eth price': 0.097754} # }
方法二:创建新字典(保留原数据)
如果不想改动原来的bal字典,可以新建一个字典来存储合并后的结果:
new_bal = {} # 遍历原bal的键值对 for asset, balance_val in bal.items(): price_key = asset + 'ETH' new_bal[asset] = { "balance": balance_val, "eth price": prices_eth.get(price_key, 0) }
这样原bal保持不变,合并后的结构都在new_bal里。
关键细节说明
- 用
prices_eth.get(price_key, 0)而不是直接prices_eth[price_key]的原因是:如果某个资产在prices_eth里没有对应的价格项,get方法会返回你指定的默认值(这里是0),而不会抛出KeyError异常,让代码更健壮。 - 拼接键名的时候要注意格式:你的
prices_eth里的键是资产名+ETH(比如POWR→POWRETH),所以直接用asset + 'ETH'就能准确匹配。
内容的提问来源于stack exchange,提问作者Vincent Levinger
相关产品推荐
相关产品推荐

