0

私は2つの列を持つtxtファイルを持っています:

user1 1
user2 2
user3 3
user4 4
user5 5

だから、私は辞書に列を読みます:

def read_users(filename):
    users = {}
    with open('1.txt', 'r') as f:
        for line in f:
            words = line.split()
            users[words[0]] = words[1]
    return users

関数は次の辞書を返します。

{'user4':'4'}; {'user5':'5'}; {'user1':'1'}; {'user2':'2'}; {'user3':'3'}

user4 で始まるのはなぜですか? user1 から user5 までである必要があります。ファイル内の文字列の順序は正しいです。

4

1 に答える 1

0

辞書は順不同です。技術的には、順序は

  • 一貫性 (キーを挿入または削除しない限り、辞書を反復すると常に同じ順序で結果が生成されます)
  • "任意"。アイテムがどのような順序で生成されるかはわかりません。

アイテムが挿入される順序と、キーのハッシュ値が何であるかによって異なります。python2.7 を使用している場合は、collections.OrderedDict挿入順序を記憶する a を使用できます。本当に興味がある場合は、Cpython がマッピングの順序を決定する方法に関するこの回答を参照してください。

于 2013-05-20T17:40:43.160 に答える