如何为字典中各列表动态追加对应加密货币名称?
字典中每个键对应列表动态追加对应名称的解决方法
问题场景
创建了如下字典:
testDict = {'BTC': [23031.0897756201, 443936922524.46, 1], 'LTC': [89.6019345445, 6465505641.56, 2], 'NMC': [1.4363653274, 21166854.02, 3], 'TRC': [0.0180333433, 413601.88, 4]}
需要为每个键对应的列表分别追加匹配的名称:
- BTC → Bitcoin
- LTC → Litecoin
- NMC → Namecoin
- TRC → Terracoin
原有代码错误地将整个名称列表追加到了BTC的列表中:
def symbol_and_price1(rawInfoList, testDict): nameList = [] for req in rawInfoList: name = req['data']['name'] nameList.append(name) testDict['BTC'].append(nameList) print(testDict) rawInfo()
错误输出:
{'BTC': [23031.0897756201, 443936922524.46, 1, ['Bitcoin', 'Litecoin', 'Namecoin', 'Terracoin']], 'LTC': [89.6019345445, 6465505641.56, 2], 'NMC': [1.4363653274, 21166854.02, 3], 'TRC': [0.0180333433, 413601.88, 4]}
期望输出:
{'BTC': [23031.0897756201, 443936922524.46, 1, 'Bitcoin'], 'LTC': [89.6019345445, 6465505641.56, 2, 'Litecoin'], 'NMC': [1.4363653274, 21166854.02, 3, 'Namecoin'], 'TRC': [0.0180333433, 413601.88, 4, 'Terracoin']}
解决方案
方案1:按顺序匹配(适用于列表与字典键顺序一致的场景)
遍历字典的键和名称列表,一一对应追加:
def symbol_and_price1(rawInfoList, testDict): nameList = [] for req in rawInfoList: name = req['data']['name'] nameList.append(name) # 逐个将名称追加到对应键的列表中 for symbol, name in zip(testDict.keys(), nameList): testDict[symbol].append(name) print(testDict)
方案2:按符号匹配(更健壮,不受顺序影响)
如果rawInfoList的每个条目包含对应币的符号(如req['data']['symbol']),直接通过符号匹配字典键,避免顺序错误:
def symbol_and_price1(rawInfoList, testDict): for req in rawInfoList: symbol = req['data']['symbol'] # 获取当前条目的币符号 name = req['data']['name'] if symbol in testDict: # 确保符号存在于字典中,防止KeyError testDict[symbol].append(name) print(testDict)
说明
- 方案1依赖
rawInfoList和testDict键的顺序完全一致,若顺序变动会导致匹配错误。 - 方案2通过符号精准匹配,无需依赖顺序,是更可靠的实现方式(前提是能从
rawInfoList中提取到对应币的符号)。
内容的提问来源于stack exchange,提问作者John C
相关产品推荐
相关产品推荐

