DefaultTict,在append元素上,维护按添加顺序排序的键

时间:2015-08-02 08:59:35

标签: python python-2.7 python-3.x dictionary defaultdict

我创建了一个空的defaultdict(list),我正在添加它。我希望按照添加顺序对键进行排序。我的代码需要输入。

输入:

4
bcdef
abcdefg
bcde
bcdef

我的代码:

from collections import defaultdict
d = defaultdict(list)
a = int(input())
for i in range(a):
    temp = raw_input()
    d[temp].append(i)
for k in d:
    print k

输出

bcde             
bcdef
abcdefg

所需输出

bcdef
abcdefg
bcde

1 个答案:

答案 0 :(得分:2)

您可以使用collections.OrderedDict来维护密钥插入的顺序。

>>> from collections import OrderedDict
>>> d = OrderedDict()
>>> for i in range(4):
...     d.setdefault(input(), []).append(i)
... 
bcdef
abcdefg
bcde
bcdef
>>> print("\n".join(d))
bcdef
abcdefg
bcde

这里,我们使用setdefault方法,如果在字典中找不到密钥,它将设置密钥的默认值(第二个参数)。并且setdefault返回与该键对应的值,因此在这种情况下,如果该键不存在,则为该键分配新列表并返回该列表。如果密钥已存在,则将返回与其对应的现有列表。我们只需在返回的列表上调用append