2017-11-22 9 views
1

このコードを実行すると、毎回属性が異なる順序で出力されます。なぜ誰が知っていますか?BeautifulSoupは確定的ではありませんか?

私はBeautifulSoup random/non-deterministicを検索しようとしましたが、何も見つかりませんでした。

from bs4 import BeautifulSoup 
html = """ 
<span class="pb-byline" itemprop="author" itemscope="" 
itemtype="http://schema.org/Person">By 
<a href="https://www.washingtonpost.com/people/joe-bloggs/"> 
<span itemprop="name">Joe Bloggs</span></a></span> 
""" 

soup = BeautifulSoup(html, "lxml") 
find_span = soup.find('span') 
print(find_span.attrs) 

私は知っているので、私はそれらを並べ替えることができますが、私はそれを理解することが非常に興味があります。

答えて

2

find_span.attrsにアクセスすると、dictionaryにアクセスしています。これらはにはの順番がありませんので、printsの順番について話をすると論理的ではありません。

dictionaryは、key : valueのペアの単なるセットです。暗黙の順序はありません。それぞれkeyは常に対応するvalueを与えます。したがって、printingは、これらのpairsが任意の順序で指定される可能性があることを意味します。

+0

私は推測します - それはまだ決定的ではないことは奇妙に思えます。 –

+0

@TroyWrayあなたのコードを何度も試してみると、同じ出力が得られるので、たぶんあなたが毎回わずかに異なるデータを使用しているのです。 –

+0

PyCharmで全く同じコードを実行しています(3.5 .1)複数回、異なる順序を得る。明らかに毎回ではないが、それは容易に異なる順序を与える。 –

関連する問題