【问题标题】:Disable the dictionary by default automatic默认自动禁用字典
【发布时间】:2016-03-29 16:07:38
【问题描述】:
    import collections.OrderedDict 
    import requests
    from bs4 import BeautifulSoup
    r = requests.get('https://www.youtube.com/playlist?list=PLIeGtxpvyG-JI5RDHtjk0NtyQPirBfBpu')
    r.status_code
    if  r.status_code == 200 :
        soup = BeautifulSoup (r.text,'html.parser')

    OrderedDict.dict = {}
    for i in soup.findAll('td',{'class':'pl-video-title'}):
        #print i 
        dict [i.find('a').text] = i.findAll('td' , { 'class': "pl-video-time"})[0].text

for i,k in collections.OrderedDict.dict.items():
    print i, k

我能够成功运行程序,但我想保留相同的顺序。我想知道如何在我的情况下使用“OrderedDict”模块。如果我使用“OrderedDict”模块,我会收到错误消息。

【问题讨论】:

  • 首先,你的错误是什么?你能包括那个和完整的回溯吗?其次,import collections.OrderedDict 不是您导入OrderedDict 的方式。它不是一个模块,它是collections 模块中的一个类。而是做from collections import OrderedDict。要创建OrderedDict,请执行my_od = OrderedDict()

标签: python python-2.7 ipython


【解决方案1】:
from collections import OrderedDict
import requests
from bs4 import BeautifulSoup

r = requests.get('https://www.youtube.com/playlist?list=PLIeGtxpvyG-JI5RDHtjk0NtyQPirBfBpu')

if r.status_code == 200:
    soup = BeautifulSoup(r.text, 'html.parser')

    d = OrderedDict()
    for i in soup.findAll('td', {'class': 'pl-video-title'}):
        d[i.find('a').text] = i.findAll('td', {'class': "pl-video-time"})[0].text

    for i, k in d.items():
        print i, k

首先,您必须从集合模块中导入 OrderedDict。

我删除了悬空的 r.status_code,因为它没有做任何事情,然后将所有内容放在 if r.status_code == 200 中,否则你会得到一个 NameError 异常,我还将 dict 更改为 d,因为你会隐藏该变量,除此之外我还修复了一些格式。

【讨论】:

    【解决方案2】:

    要实例化你必须做的 OrderedDict

    myOrderedDict = OrderedDict([])
    

    不是

    OrderedDict.dict = {}
    

    并遍历有序的字典

    for i,j in in myOrderedDict.items():
        #do something with i and j
    

    【讨论】:

    • 他的导入搞砸了,所以你可能想把它包括在你的答案中。
    • 如果他想“覆盖”dict,那么他应该写dict = OrderedDict。如果不是,他也不应该写 dict = OrderedDict()
    猜你喜欢
    • 2011-06-29
    • 2012-05-25
    • 2011-12-14
    • 1970-01-01
    • 2012-09-24
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    相关资源
    最近更新 更多