DefaultDict ,在附加元素上,维护按添加顺序排序的键
DefaultDict ,on append elements, maintain keys sorted in the order of addition
我创建了一个空 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
returns 键对应的值,所以在这种情况下,如果键不存在,则会针对该键分配一个新列表并将其返回。如果该键已经存在,则返回对应于该键的现有列表。我们只需在返回的列表上调用 append
。
我创建了一个空 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
returns 键对应的值,所以在这种情况下,如果键不存在,则会针对该键分配一个新列表并将其返回。如果该键已经存在,则返回对应于该键的现有列表。我们只需在返回的列表上调用 append
。