如何从包含多个项的python字典中选择值

2024-06-01 08:41:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从python字典中获取值。正如你在下面看到的,我有这个例子。我只想获取以"BTC_"开头的键,如果它的"BTC"值大于100,就选择它。你知道吗

d = { 
  'BTC_LTC':  { 'BTC': '138.13504038', 'LTC': '4662.34229096' }, 
  'BTC_MAID': { 'BTC': '10.38010322', 'MAID': '359919.71515255' },
  'BTC_NEM': { 'BTC': '30.34435435', 'NEM': '34435345' },
  'BTC_TRX': { 'BTC': '101.1122', 'TRX': '4546456456.343543543' },
  'USDC_BTC': { 'USDC': '481389.13175764', 'BTC': '74.73988488' },
  'USDC_ETH': { 'USDC': '72302.27016210', 'ETH': '357.72884034' },
  'totalBTC': '2340.96441558',
  'totalETH': '2771.63218462',
  'totalUSDC': '681255.56961992',
  'totalXMR': '267.83601213' 
}

预期结果如下:

['BTC_LTC', 'BTC_TRX'] 

因为它们的键以"BTC_"开始,并且它们的'BTC'值大于100。你知道吗


Tags: 字典ltc例子ethbtcnemtrxmaid
3条回答

假设键是字符串,可以使用以下方法将字典分配给名为d的变量:

d = { 
  'BTC_LTC':  { 'BTC': '138.13504038', 'LTC': '4662.34229096' }, 
  'BTC_MAID': { 'BTC': '10.38010322', 'MAID': '359919.71515255' },
  'BTC_NEM': { 'BTC': '30.34435435', 'NEM': '34435345' },
  'BTC_TRX': { 'BTC': '101.1122', 'TRX': '4546456456.343543543' },
  'USDC_BTC': { 'USDC': '481389.13175764', 'BTC': '74.73988488' },
  'USDC_ETH': { 'USDC': '72302.27016210', 'ETH': '357.72884034' },
  'totalBTC': '2340.96441558',
  'totalETH': '2771.63218462',
  'totalUSDC': '681255.56961992',
  'totalXMR': '267.83601213' 
}   

>>> [k for k, v in d.items() if k.startswith('BTC_') and v.get('BTC', None) is not None and float(v.get('BTC')) > 100]

['BTC_LTC', 'BTC_TRX']
dic = { 
  BTC_LTC:  { BTC: '138.13504038', LTC: '4662.34229096' }, 
  BTC_MAID: { BTC: '10.38010322', MAID: '359919.71515255' },
  BTC_NEM: { BTC: '30.34435435', NEM: '34435345' },
  BTC_TRX: { BTC: '101.1122', TRX: '4546456456.343543543' },
  USDC_BTC: { USDC: '481389.13175764', BTC: '74.73988488' },
  USDC_ETH: { USDC: '72302.27016210', ETH: '357.72884034' },
  totalBTC: '2340.96441558',
  totalETH: '2771.63218462',
  totalUSDC: '681255.56961992',
  totalXMR: '267.83601213' 
}   

res = []
for i in dic:
    if isinstance(i,dict):
        if i['BTC']>100:
            res.append(i)

print(res)

你可以试试这个:

假设为给定的字典分配一个变量

a = { 
  'BTC_LTC':  { 'BTC': '138.13504038', 'LTC': '4662.34229096' }, 
  'BTC_MAID': { 'BTC': '10.38010322', 'MAID': '359919.71515255' },
  'BTC_NEM': { 'BTC': '30.34435435', 'NEM': '34435345' },
  'BTC_TRX': { 'BTC': '101.1122', 'TRX': '4546456456.343543543' },
  'USDC_BTC': { 'USDC': '481389.13175764', 'BTC': '74.73988488' },
  'USDC_ETH': { 'USDC': '72302.27016210', 'ETH': '357.72884034' },
  'totalBTC': '2340.96441558',
  'totalETH': '2771.63218462',
  'totalUSDC': '681255.56961992',
  'totalXMR': '267.83601213' 
}   
result = []
for k, v in a.items():
   if k.startswith('BTC') and float(v.get('BTC', 0)) > 100:
       result.append(k)
print(result)

在Python中,dictionary中的键必须是不可变的,因此您的dictionary无效,您必须将键转换为字符串或不可变对象才能使用

https://docs.python.org/2.7/tutorial/datastructures.html#dictionaries

相关问题 更多 >