【问题标题】:DefaultDict ,on append elements, maintain keys sorted in the order of addition [duplicate]DefaultDict ,在附加元素上,维护按添加顺序排序的键[重复]
【发布时间】:2015-10-24 13:18:08
【问题描述】:

我创建了一个空的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

【问题讨论】:

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


    【解决方案1】:

    您可以使用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返回的是key对应的值,所以在这种情况下,如果key不存在,那么会为key分配一个新的list,然后返回。如果键已经存在,则返回对应的现有列表。我们只需在返回的列表上调用append

    【讨论】:

    • 谢谢,解决了我的问题,但我有疑问。我读到 defaultdict(list)dict.setdefault 快。我试过OrderedDict(list),但它给出了一个错误。因此,使用 OrderedDict()dict.setdefault 是唯一的方法。对吗?
    • @Charan 正确,OrderedDict,只能使用setdefault
    猜你喜欢
    • 2020-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多