3 回答

TA貢獻1846條經驗 獲得超7個贊
原因是字典沒有明確定義的順序。您可以使用OrderedDict(它有一個順序),在你得到的排序字典上:
python3 -c "from collections import OrderedDict; import httpagentparser; s='$user_agent_e'; print (OrderedDict(sorted(httpagentparser.detect(s).items())))"
或解開:
from collections import OrderedDict
import httpagentparser; s='$user_agent_e'
print(OrderedDict(sorted(httpagentparser.detect(s).items())))

TA貢獻1806條經驗 獲得超8個贊
在 Python3 版本低于 3.6 中不排序字典。
如果您希望所有詞典都保留插入順序,則可以使用 CPython 3.6 或更高版本。否則,您可以將 httpagentparser 的輸出轉換為列表:
python3.5 -c "import httpagentparser; s='$user_agent_e'; print (list(map(list, httpagentparser.detect(s).items())))"
這不需要任何額外的導入。

TA貢獻1853條經驗 獲得超6個贊
這些都是一樣的。
>>> a={'bot': False, 'os': {'version': '10', 'name': 'Windows'}, 'browser': {'version': '73.0.3683.86', 'name': 'Chrome'}, 'platform': {'version': '10', 'name': 'Windows'}}
>>> b={'platform': {'version': '10', 'name': 'Windows'}, 'bot': False, 'browser': {'version': '73.0.3683.86', 'name': 'Chrome'}, 'os': {'version': '10', 'name': 'Windows'}}
>>> c={'browser': {'name': 'Chrome', 'version': '73.0.3683.86'}, 'bot': False, 'os': {'name': 'Windows', 'version': '10'}, 'platform': {'name': 'Windows', 'version': '10'}}
>>> d={'bot': False, 'os': {'version': '10', 'name': 'Windows'}, 'browser': {'version': '73.0.3683.86', 'name': 'Chrome'}, 'platform': {'version': '10', 'name': 'Windows'}}
>>> e={'platform': {'version': '10', 'name': 'Windows'}, 'os': {'version': '10', 'name': 'Windows'}, 'bot': False, 'browser': {'version': '73.0.3683.86', 'name': 'Chrome'}}
>>> a==b==c==d==e
True
這些是字典。字典沒有排序,所以鍵值對的打印順序是隨機的。盡管如此,它們還是一樣的。
添加回答
舉報