如何从词典列表中获取值-Python 3.7.1

时间:2019-01-09 21:27:58

标签: python-3.x bitcoin cryptocurrency

字典列表出现问题。我需要从以下列表中获取比特币的价格(列表更长,但我将此消息削减了):

tickerlist = [{'symbol': 'ETHBTC', 'price': '0.03756600'},
            {'symbol': 'LTCBTC', 'price': '0.00968200'},
            {'symbol': 'BNBBTC', 'price': '0.00164680'},
            {'symbol': 'NEOBTC', 'price': '0.00230000'},
            {'symbol': 'QTUMETH', 'price': '0.01587100'},
            {'symbol': 'EOSETH', 'price': '0.01875000'},
            {'symbol': 'SNTETH', 'price': '0.00013221'},
            {'symbol': 'BNTETH', 'price': '0.00445000'},
            {'symbol': 'BCCBTC', 'price': '0.07908100'},
            {'symbol': 'GASBTC', 'price': '0.00064300'},
            {'symbol': 'BNBETH', 'price': '0.04389800'},
            {'symbol': 'BTCUSDT', 'price': '3954.63000000'}]

目标是获得以下结果:

BTCUSDT = 3954.63000000

我编写了以下noob代码来实现自己的目标:

x = tickerlist[11]
BTCUSDT = x["price"]
print(BTCUSDT)

由于我感兴趣的字典列表(第11位)中的顺序将来可能会发生变化:{'symbol':'BTCUSDT','price':'3954.63000000'}, 我想知道是否有一个函数,只需在其中插入“ BTCUSDT”,它就会把价格(“ 3954.63000000”)还给我。

我查看了stackoverflow并找到了完整的列表,但是我没有设法使其正常工作。

您有什么想法吗?

我正在使用Python 3.7.1

3 个答案:

答案 0 :(得分:2)

您可以将next函数与生成器表达式一起使用,该表达式可迭代tickerlist以找到匹配的符号:

try:
    BTCUSDT = next(ticker['price'] for ticker in tickerlist if ticker['symbol'] == 'BTCUSDT')
except StopIteration:
    raise RuntimeError('No matching symbol found')

答案 1 :(得分:2)

您可以使用dict代替list

ticker_dict =  {
    'ETHBTC': {'price': '0.03756600'},
    'LTCBTC', {'price': '0.00968200'}
}

可以执行以下操作:

my_currency = list(filter(lambda list_element: list_element['symbol'] == your_symbol, tickerlist))[0]

答案 2 :(得分:0)

尝试以下操作:

index = [ i for i in range(len(lst)) if lst[i]['symbol'] == 'BTCUSDT' ][0]

print( tickerlist[index]['symbol'], '=', tickerlist[index]['price'] )