Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从包含多个项的python字典中选择值_Python_Python 2.7 - Fatal编程技术网

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

如何从包含多个项的python字典中选择值,python,python-2.7,Python,Python 2.7,我试图从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', 'N

我试图从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' 
}
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)
预期结果如下所示:

['BTC_LTC', 'BTC_TRX'] 
由于它们的键以“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' 
}
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',
‘总计’:‘2771.63218462’,
“总计USDC”:“681255.56961992”,
“totalXMR”:“267.83601213”
}   
结果=[]
对于a.items()中的k,v:
如果k.startswith('BTC')和float(v.get('BTC',0))>100:
结果追加(k)
打印(结果)
在Python中,字典中的键必须是不可变的,所以字典无效,必须将键转换为字符串或不可变对象才能使用

您可以尝试以下方法:

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

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',
‘总计’:‘2771.63218462’,
“总计USDC”:“681255.56961992”,
“totalXMR”:“267.83601213”
}   
结果=[]
对于a.items()中的k,v:
如果k.startswith('BTC')和float(v.get('BTC',0))>100:
结果追加(k)
打印(结果)
在Python中,字典中的键必须是不可变的,所以字典无效,必须将键转换为字符串或不可变对象才能使用


假设您的键是字符串,您可以使用以下命令将字典分配给名为
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']

假设键是字符串,则可以使用以下命令将字典分配给名为
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']

键作为字符串,使用列表理解:

inp = {
    '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'
}

outp = [k for k, v in inp.items() if k[:4] == "BTC_" and float(v["BTC"]) > 100]

print(outp)

键作为字符串,使用列表理解:

inp = {
    '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'
}

outp = [k for k, v in inp.items() if k[:4] == "BTC_" and float(v["BTC"]) > 100]

print(outp)

钥匙是字符串吗?欢迎来到stackoverflow!阅读FAQ以了解如何发布一个好问题是很重要的。在这种情况下,您还没有回答:到目前为止您尝试了什么?@lmiguelvargasf yes strings是键字符串吗?欢迎使用stackoverflow!阅读FAQ以了解如何发布一个好问题是很重要的。在本例中,您尚未回答:到目前为止您尝试了什么?@lmiguelvargasf yes strings