Python 无法使循环正常工作

Python 无法使循环正常工作,python,python-3.x,coinbase-api,Python,Python 3.x,Coinbase Api,目前正在使用python3 我正在尝试创建一个函数来提取加密货币的价格,并将其发送到我的手机。我成功地下载了所有内容,并为比特币工作,但我字典中的其他货币没有正确使用。任何帮助都将不胜感激 client = Client(api_key = 'insert coinbase api key', api_secret='insert coinbase api secret', api_version = '2017-12-13') def buyPrice(): priceDic

目前正在使用python3

我正在尝试创建一个函数来提取加密货币的价格,并将其发送到我的手机。我成功地下载了所有内容,并为比特币工作,但我字典中的其他货币没有正确使用。任何帮助都将不胜感激

client = Client(api_key = 'insert coinbase api key', api_secret='insert coinbase api secret', api_version = '2017-12-13')   


def buyPrice():
    priceDict ={ 'BTC-USD': '', 'ETH-USD': '', 'LTC-USD': ''}
    for key in priceDict:
        if priceDict[key] == '':
            current_price = client.get_buy_price(currency_pair =priceDict[key])
            priceDict[key] = current_price['amount']
        else:
            continue
    return priceDict
buyPrice()
出厂价格:

{'BTC-USD': '18897.59', 'ETH-USD': '18897.59', 'LTC-USD': '18897.59'}

这应该是您的迭代方法
用于输入priceDict.keys():


我还建议您使用
if priceDict.get(key)
,因为它不仅速度更快,而且有时还能防止您提供的
key错误
异常

,我相信您应该这样做

client.get\u buy\u price(货币对=密钥)

而不是

client.get\u buy\u price(货币对=priceDict[key])

当您为参数
currency\u pair
指定密钥的值而不是其名称时


正如我在评论中所说的,您应该按照以下步骤迭代键和值(这是正确的版本)


为什么需要
if
语句?字典中的所有值最初都是空的,是不是
client.get\u buy\u price()
be
key
,而不是
priceDict[key]
?我认为这个条件是不必要的。在你的行中
current\u price=client.get\u buy\u price(currency\u pair=priceDict[key])
,您正试图将值而不是键发送给将获取价格的函数。您还应该对priceDict.items()中的键、值执行
,这样您就可以使用
value
而不是
priceDict[key]
。这应该是一个注释,它提供了一个编码提示。它也不能回答OP的问题。使用
作为priceDict.keys()的键,而不仅仅是
作为priceDict的键,会损害可读性,并迫使您编写更多晦涩难懂的代码(如
.get()
),我同意。我的观点并不是关于循环,而是关于
map[key]
vs
map.get(key)
,这一个有更好的性能。否则,我会通过反射编写一个iteritems,因为我的作业元组大小在map.items()中出现oom,如果我确定要处理每一行,那么我就使用迭代器
def buyPrice():
    priceDict ={ 'BTC-USD': '', 'ETH-USD': '', 'LTC-USD': ''}
    for key, value in priceDict.items():
        if value == '':
            current_price = client.get_buy_price(currency_pair = key)
            value = current_price['amount']
        else:
            continue
    return priceDict