【问题标题】:Update Dictionary Key with multiple values for REQUESTS [closed]使用 REQUESTS 的多个值更新字典键 [关闭]
【发布时间】:2014-07-14 00:38:57
【问题描述】:

我有这个代码:

dict = {
    "key": "0"
}

我正在从文件中读取一些代理。基本上,我正在使用每个代理更新dict['key']。导致

"key": ['proxy1','proxy2'...]

但是当我提出请求时,我有这个:

for x in range(0,l):
    requests.get(link, proxies=proxies[x])

我得到的错误是:

File "main.py", line 19, in (module)
request.get(link, proxies=dict['key'][x])
Key Error: 0

执行proxies['http'][x] 会给我"str object has no attribute 'get' "

似乎无法向每个代理发出一个请求。

任何帮助将不胜感激。

【问题讨论】:

  • 不要使用dict作为变量名,你是在屏蔽内置的。你想要一个 list 作为值。
  • 听起来你希望你的价值是list
  • 您想为所有这些“键”分配什么“值”?
  • 将值设为列表。检查this,了解如何实现这一点。
  • 这里request是什么,proxies是什么?您需要提供更多上下文。 Key Error 消息看起来.. 充其量是不正确的。您的回溯与您的实际代码不匹配。

标签: python dictionary


【解决方案1】:

你想要一个列表:

dct = {'key': []}

for i in range(10):
    dct['key'].append(i)

这只是简单地操作与键关联的列表值。字典本身并没有真正改变,它只是用来引用包含的列表。

当每个键需要多个值时,您需要一个嵌套结构。这里是一个列表,但也可以是另一个字典、元组、集合、自定义类的实例等。

【讨论】:

  • @AndyG:已更正;我故意使用dct,但在第二次使用时绊倒了。
  • 谢谢。我知道这一点,但我想我应该指定我使用它的上下文。我会修改问题。我的错。
  • @Benjamin:每当您想要与一个键关联的多个值时,您都需要一个嵌套结构。这可以是另一个字典、一个集合,或者像这里所做的那样,一个列表。
  • @Benjamin:无论如何,您在问题中提出的语法无效。
  • 非常感谢,很抱歉给您带来麻烦。我已经根据我使用它的上下文更新了我的问题。
【解决方案2】:

如果您想避免手动添加空列表,请使用默认字典:

from collections import defaultdict
dd = defaultdict(list) # list if a nullary callable that returns a new list object
dd['var'].extend(range(10))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-23
    • 2018-02-03
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多