【发布时间】:2019-09-13 17:38:42
【问题描述】:
我收到了这个家庭作业问题,在参加了 Udemy 课程后,我仍然无法弄清楚如何获得像解决方案这样的正确输出。
此外:我怎样才能提高效率。我如何在不使用显式循环的情况下做到这一点,而是使用列表/字典推导。
这就是我的工作:
def group_permutation_values(permutations_list):
dic = {}
f = lambda x: x[1]
for key, group in itertools.groupby(sorted(permutations_list, key=f), f):
dic[key] = list(group)
return dic
pass
results = [
((1, 2, 3), -4),
((1, 3, 2), -4),
((2, 1, 3), -2),
((2, 3, 1), -2),
((3, 1, 2), 0),
((3, 2, 1), 0)
]
print(group_permutation_values(results))
这是我得到的:
{
-4: [((1, 2, 3), -4), ((1, 3, 2), -4)],
-2: [((2, 1, 3), -2), ((2, 3, 1), -2)],
0: [((3, 1, 2), 0), ((3, 2, 1), 0)]
}
以及预期的输出:
{
-4: [(1, 2, 3), (1, 3, 2)],
-2: [(2, 1, 3), (2, 3, 1)],
0: [(3, 1, 2), (3, 2, 1)]
}
【问题讨论】:
-
请不要通过破坏您的帖子为他人增加工作量。通过在 Stack Exchange 网络上发帖,您已在 CC BY-SA 3.0 license 下授予 Stack Exchange 分发该内容的不可撤销的权利(即无论您未来的选择如何)。根据 Stack Exchange 政策,帖子的非破坏版本是分发的版本。因此,任何破坏行为都将被撤销。如果您想了解更多关于删除帖子的信息,请参阅:How does deleting work?