【发布时间】:2018-08-10 10:28:43
【问题描述】:
我从这段代码开始:
import bs4, requests
def bal(address, symbol, name):
r = requests.get('https://bitinfocharts.com/' + name + '/address/' + address)
soup = bs4.BeautifulSoup(r.text, 'html.parser')
elems = soup.find('div', itemprop = 'offers').contents[0].text
elems = elems.replace(symbol,'').strip()
return(elems)
print(bal('3D2oetdNuZUqQHPJmcMDDHYoqkyNVsFk9r', 'BTC', 'Bitcoin'))
print(bal('LQL9pVH1LsMfKwt82Y2wGhNGkrjF8vwUst', 'LTC', 'Litecoin'))
哪个有效并生成:
174,631.39464194
897,135.38526651
但是,该函数需要在大量字典中运行,因此我尝试修改代码并将数据放入字典中,然后列出要作为函数参数传递的字典。
import bs4, requests
wallet1 = {
'address' : '3D2oetdNuZUqQHPJmcMDDHYoqkyNVsFk9r',
'symbol' : 'BTC',
'name' : 'Bitcoin',
}
wallet2 = {
'address' : 'LQL9pVH1LsMfKwt82Y2wGhNGkrjF8vwUst',
'symbol' : 'LTC',
'name' : 'Litecoin',
}
wallets = [wallet1, wallet2]
def bal(address, symbol, name):
r = requests.get('https://bitinfocharts.com/' + name + '/address/' + address)
soup = bs4.BeautifulSoup(r.text, 'html.parser')
elems = soup.find('div', itemprop = 'offers').contents[0].text
elems = elems.replace(symbol,'').strip()
return(elems)
print(bal(wallets))
我收到以下错误消息:
Traceback (most recent call last):
File "/Users/tfountain/Desktop/python_work/stack.py", line 46, in <module>
print(bal(wallets))
TypeError: bal() missing 2 required positional arguments: 'symbol' and 'name'
>>>
我到底哪里错了?
应该如何使用字典列表作为函数参数?
【问题讨论】:
-
您当前将字典作为第一个参数
address传递。要么重写方法以获取单个字典,要么使用bal(**wallet)将字典解包以分隔参数。 -
您根本没有更改
bal的实现,您为什么期望它会起作用? -
试试
bal(**wallet1) -
@juanpa - python 新手不知道需要更改什么。这就是我使用stackoverflow的方式。
-
@But youe
bal函数只在每次调用时解析一个!如果你真的想检查每个钱包,你应该定义第二个函数 calllmany_bal这样的东西,然后做一个循环并在里面调用!
标签: python list dictionary arguments