如何在python中的字典中的键中存储多个值?

时间:2018-05-15 10:50:40

标签: python python-2.7

也许我的问题标题与问题内容不同。

statuscode = []
statuscode.append(200) 

for x in find_from_sublister(hostname):
    x2 = x.strip()
    url = "http://"+ x2
    try:
        req = requests.get(url)
        req1 = str(req.status_code) + " " + str(url) + '\n'
        req2 = str(req.status_code)
        req3 = str(url)
        dict = {req2 : req3}

        print " \n " + str(req1)

    except requests.exceptions.RequestException as e:
        print "Can't make the request to this Subdomain " + str(url) + '\n'

for keys, values in dict.iteritems():
    print "finding the url's whose status code is 200"

    if keys == statuscode[0]:
        print values
    else:
        print "po"

我正在使用代码执行以下操作。

  1. 它将从Sub-lister(本地)
  2. 中找到子域
  3. 然后,在 for loop 的帮助下,它将查找sublister找到的每个子域的状态代码。 for x in find_from_sublister(hostname):
  4. 注意:find_from_sublister(hostname)是一个从子列表中查找子域的函数。

    1. 然后使用URL打印状态代码。这里print " \n " + str(req1)
    2. [一切顺利,但问题从这里开始]

      现在我想要的是分隔有200个状态代码的网址。

      所以我听说可以通过在python中使用字典来实现。所以,我尝试使用字典。如您所见dict = {req2 : req3}

      现在我还列出了一个值为200

      的索引

      然后我将键与索引列表进行比较。这里keys == statuscode[0]

      如果它们匹配,那么它应该打印所有具有200个状态代码的URL。

      但我得到的结果如下,

      finding the url's whose status code is 200 
      po 
      

      您会看到值po的其他参数值

      else:
         print "po"
      

      现在问题是为什么我得到这个其他值为什么不是具有状态代码200的URL?

      希望我能清楚地解释你。等待有人跟我说话。

      谢谢

      注意:我正在使用Python 2.7 ver。

1 个答案:

答案 0 :(得分:0)

在你的情况下,你甚至不需要字典。

我尝试尽可能地清理代码,包括更多描述性变量名称(同样,覆盖像dict这样的内置名称也是一个坏主意。)

urls_returning_200 = []

for url in find_from_sublister(hostname):
    url = "http://" + url.strip()
    try:
        response = requests.get(url)
        if response.status_code == 200:
            urls_returning_200.append(url)
        print " \n {} {}\n".format(response.status_code, url)
    except requests.exceptions.RequestException as e:
        print "Can't make the request to this Subdomain {}\n".format(url)

print "finding the url's whose status code is 200"
print urls_returning_200