【发布时间】:2019-09-02 14:31:05
【问题描述】:
我想知道下面的代码返回的内容是否符合预期?
我在 Python 3.7 上运行它。
我期望“预期”输出,但只返回每个组的最后一个条目,如“实际”中所示。
import operator
import itertools
adict = {'a': 1, 'b':3, 'c': 1, 'd': 2, 'e': 3, 'f': 1}
dict((i, dict(v)) for i, v in itertools.groupby(adict.items(), operator.itemgetter(1)))
Expected Output: {1: {'a': 1, 'c': 1, 'f':1}, 2: {'d': 2}, 3: {'b', 'e'} }
Actual : {1: {'f': 1}, 3: {'e': 3}, 2: {'d': 2}}
【问题讨论】:
-
您的预期输出不一致
-
无论如何,为什么要嵌套字典?为什么不使用
defultdict可以轻松获得的{1: ['a', 'c', 'f'], 2: ['d'], 3: ['b', 'e']}? -
嗨@DeepSpace ,我刚刚熟悉了itertools 和运算符函数,并且正在浏览示例,因此遇到了这个问题。这是链接riptutorial.com/python/example/923/operator-module
-
itertools.group适用于 consecutive 键...其中,您没有任何...并且由于字典具有唯一键,而您正在构建如果您正在用该键的最后一次看到的值替换该组的键...
标签: python python-3.x operator-keyword itertools