gpt4 book ai didi

python - 字典中 4 和 3 个元素的组合

转载 作者:行者123 更新时间:2023-12-04 08:02:06 24 4
gpt4 key购买 nike

我需要将学生分数字典分成 4 组和 3 组的所有可能组合。
到目前为止我有

from itertools import combinations

student_scores = {"A": 68, "B": 77, "C": 82, "D": 85, "E": 53, "F": 64, "G": 71}
groups_of_4 = list(map(dict, combinations(student_scores.items(), 4)))
当我试图获得这些 4 组的赞美时,麻烦就来了。它似乎涉及某种字典差异运算符,但我的研究没有明确说明如何实现这一点 - 有些答案说我需要使用集合,其他人没有。
我管理的最好的是
print(groups_of_4[0], {k: v for k, v in student_scores.items() if k not in groups_of_4[0]})
给出一个组合,但我看不出如何修改它以适用于所有组合,尤其是因为字典理解仅检查单个项目。
任何帮助解决这个问题非常感谢。

最佳答案

您必须使用 set 找到补码。 dict.items的差分运算对象,并将它们转换回 dict :

>>> from itertools import combinations

>>> groups_of_4 = list(map(dict, combinations(student_scores.items(), r=4)))

>>> groups_of_3 = [dict(student_scores.items() - other.items()) for other in groups_of_4]

>>> groups_of_3
[{'G': 71, 'E': 53, 'F': 64},
{'G': 71, 'F': 64, 'D': 85},
{'G': 71, 'E': 53, 'D': 85},
{'E': 53, 'F': 64, 'D': 85},
{'G': 71, 'F': 64, 'C': 82},
...
{'G': 71, 'B': 77, 'A': 68},
{'F': 64, 'B': 77, 'A': 68},
{'E': 53, 'B': 77, 'A': 68},
{'D': 85, 'B': 77, 'A': 68},
{'B': 77, 'C': 82, 'A': 68}]
您可以找到更多关于如何 set属性在 dictionary view objects 中实现在 PEP 3106

关于python - 字典中 4 和 3 个元素的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66408454/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com