1

辞書は、要素が約 1、2、または 3 つしかない場合に順序を正しく保持します

>>> a = ["dorian", "strawberry", "apple"]
>>> b = ["sweet", "delicious", "tasty"]
>>> c = dict(zip(a, b))
>>> c
{'dorian': 'sweet', 'strawberry': 'delicious', 'apple': 'tasty'}

ただし、要素が 3 つを超えると順序が崩れます

>>> a = ["dorian", "strawberry", "apple", "coconut"]
>>> b = ["sweet", "delicious", "tasty", "yum"]
>>> c = dict(zip(a, b))
>>> c
{'strawberry': 'delicious', 'coconut': 'yum', 'dorian': 'sweet', 'apple': 'tasty'}

なぜそのようになるのか、誰か説明してもらえますか?ありがとう

4

3 に答える 3

6

Python 辞書は順序を維持しません。そのために使用する必要がありますOrderedDict

In [7]: from collections import OrderedDict as od

In [8]: a = ["dorian", "strawberry", "apple"]

In [9]: b = ["sweet", "delicious", "tasty"]

In [10]: dic=od(zip(a,b))

In [11]: dic
Out[11]: OrderedDict([('dorian', 'sweet'), ('strawberry', 'delicious'), ('apple', 'tasty')])
于 2013-01-31T14:11:28.413 に答える
1

Pythondictは順不同です。collections.OrderedDict代わりに使用してください。

from collections import OrderedDict as odict

# ...
c = odict(zip(a, b))
于 2013-01-31T14:11:55.553 に答える
1

辞書はマップ データ構造です。線形保証注文はできません。これを犠牲にすると、基礎となる実装で速度が向上します。

于 2013-01-31T14:12:03.977 に答える