Python 从类中的嵌套词典打印

Python 从类中的嵌套词典打印,python,dictionary,Python,Dictionary,让isues找出这个特殊设置不起作用的原因 class market(object): def __init__(self, market, coin): self.coin = coin self.market = market req = requests.get(f"http://bittrex.com/api/v1.1/public/getticker?market={market}-{coin}") sum = r

让isues找出这个特殊设置不起作用的原因

class market(object):
    def __init__(self, market, coin):
        self.coin = coin
        self.market = market
        req = requests.get(f"http://bittrex.com/api/v1.1/public/getticker?market={market}-{coin}")
        sum = requests.get(f"https://bittrex.com/api/v1.1/public/getmarketsummary?market={market}-{coin}")
        self.address = req.json()
        self.marketsum = sum.json()

    def ticker(self):
        while True:
            print(self.address["result"])
            time.sleep(5)

    def marketsummary(self):
        print(f"Market Summary for {coin}")
        print('_' * 20)
        print("Market Name: ", self.marketsum['result']['MarketName'])
        print("High: ", self.marketsum['result']['High']))
        print("Low: ", self.marketsum['result']['Low'])
        print("Volume: ", self.marketsum['result']['Volume'])
        print("Last: ", self.marketsum['result']['Last'])
        print("BaseVolume: ", self.marketsum['result']['BaseVolume'])
        print("TimeStamp: ", self.marketsum['result']['TimeStamp'])
        print("Bid: ", self.marketsum['result']['Bid'])
        print("Ask: ", self.marketsum['result']['Ask'])
        print("OpenBuyOrders: ", self.marketsum['result']['OpenBuyOrders'])
        print("OpenSellOrders: ", self.marketsum['result']['OpenSellOrders'])
        print("Previous Day: ", self.marketsum['result']['PrevDay'])
        print("Created: ", self.marketsum['result']['Created'])
        print("DisplayMarketName: ", self.marketsum['result']['DisplayMarketName'])`
我以前在if语句中对静态变量(?jaron?)使用过这种方法,例如

usdt_ticker = requests.get("https://bittrex.com/api/v1.1/public/getticker?market=USDT-ADA")
btc_ticker = requests.get("https://bittrex.com/api/v1.1/public/getticker?market=BTC-ADA")
eth_ticker = requests.get("https://bittrex.com/api/v1.1/public/getticker?market=ETH-ADA")

print("Which trade pairing would you like for this coin?")
tradepair = input("> ")
if str.lower(tradepair) == "usdt" or "tether":
    actual_ticker = usdt_ticker.json()
elif str.lower(tradepair) == "btc" or "bitcoin":
    actual_ticker = btc_ticker.json()
elif str.lower(tradepair) == "eth" or "ethereum":
    actual_ticker = eth_ticker.json()
else:
    print("Sorry that trading pair isnt currently being monitored by this system")
print("Now viewing Cardano /", str.upper(tradepair), " trading." )
current_price = actual_ticker["result"]["Last"]
但是对于self.marketsum['result']['MarketName']它不起作用。如果有任何关于为什么会发生这种情况以及如何解决它的意见,我将不胜感激。我得到的错误是

TypeError:list指示符必须是整数或片,而不是str

中的,来自
/public/getmarketsummary
的响应的json结构如下所示:

{
    "success" : true,
    "message" : "",
    "result" : [{
            "MarketName" : "BTC-LTC",
            "High" : 0.01350000,
            "Low" : 0.01200000,
            "Volume" : 3833.97619253,
            "Last" : 0.01349998,
            "BaseVolume" : 47.03987026,
            "TimeStamp" : "2014-07-09T07:22:16.72",
            "Bid" : 0.01271001,
            "Ask" : 0.01291100,
            "OpenBuyOrders" : 45,
            "OpenSellOrders" : 45,
            "PrevDay" : 0.01229501,
            "Created" : "2014-02-13T00:00:00",
            "DisplayMarketName" : null
        }
    ]
}
请注意,结果实际上是一个包含单个元素的列表。他们没有说明为什么它在一个列表中,我也不能让它返回一个包含多个元素的列表

现在,将访问
marketsum
的行从

self.marketsum['result']['last']


可能还会添加一个检查,确保列表不为空。

第77行
Msummary.marketsummary()
45行
print(“市场名称:”,self.marketsum['result']['MarketName'])
这就成功了!我希望我能更清楚地理解它为什么起作用,但我很高兴它起作用了,哈哈。为了回答您的问题,它是一个字典列表,每个字典对应一种加密货币。
result
对象是一个列表,其唯一元素是dict。它看起来类似于
result=[{'high':0.13,'low':0.12}]
。要找到里面的字典,你需要把它从列表中去掉。
self.marketsum['result'][0]['last']