用for循环创建字典

时间:2014-07-27 01:26:43

标签: python dictionary

我遇到了这个Python 2.7代码的问题:

singlelower = string.ascii_lowercase
lowerdict = {}
for i in singlelower:
     lowerdict[i] = i

我希望这返回一个字典,其中每个键和值都相似,所有键都按字母顺序排列。它创建了字典,但是乱序,即使for循环应按字母顺序逐步执行字符串。这是输出:

{'a': 'a', 'c': 'c', 'b': 'b', 'e': 'e', 'd': 'd', 'g': 'g', 'f': 'f', 'i': 'i', 'h': 'h', 'k': 'k', 'j': 'j', 'm': 'm', 'l': 'l', 'o': 'o', 'n': 'n', 'q': 'q', 'p': 'p', 's': 's', 'r': 'r', 'u': 'u', 't': 't', 'w': 'w', 'v': 'v', 'y': 'y', 'x': 'x', 'z': 'z'}

正如您所看到的,字典是反向对的。我是否忽略了实施的内容?

1 个答案:

答案 0 :(得分:1)

如果有令人信服的理由按顺序排列字典,请使用collections.OrderedDict()。它是dict的子类,因此它支持您对普通字典所期望的所有操作。

from collections import OrderedDict
import string

lowerdict = OrderedDict()
for char in string.ascii_lowercase:
    lowerdict[char] = char


>>> print(lowerdict)
OrderedDict([('a', 'a'), ('b', 'b'), ('c', 'c'), ('d', 'd'), ('e', 'e'), ('f', 'f'), ('g', 'g'), ('h', 'h'), ('i', 'i'), ('j', 'j'), ('k', 'k'), ('l', 'l'), ('m', 'm'), ('n', 'n'), ('o', 'o'), ('p', 'p'), ('q', 'q'), ('r', 'r'), ('s', 's'), ('t', 't'), ('u', 'u'), ('v', 'v'), ('w', 'w'), ('x', 'x'), ('y', 'y'), ('z', 'z')])