python - DefaultDict ,在附加元素上,维护按添加顺序排序的键

标签 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

最佳答案

您可以使用 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

关于python - DefaultDict ,在附加元素上,维护按添加顺序排序的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31770251/

相关文章:

python - 无法重复我的代码中所要求的内容

python - gitpython 使用 PYTHON 检查文件是否有任何更改

python - 如何检查一个列表是否等于使用类创建的另一个列表?

python - Pandas 在 Python 中将一些行转换为列

windows - 如何在 Cygwin 中使用 Python 有效地将 POSIX 路径转换为 ​​Windows 路径?

python - tkinter 执行在大约 140 次迭代后终止,没有错误消息(内存泄漏?)

python - django 中的 robots.txt 警告是什么,建议如何处理?

python - 用于 Python 的 MySQLdb - 不兼容的库版本错误?

Python Pandas read_sql_query “' NoneType' object is not iterable”错误

python - 复制并附加到空列表