以下是我到目前为止所拥有的:
import itertools as it
allNotesDict = {"C": 1, "Db": 2, "D": 3,
"Eb": 4, "E": 5, "F": 6,
"Gb": 7, "G": 8, "Ab": 9,
"A": 10, "Bb": 11, "B": 12}
combNotes = list(it.combinations(allNotesDict, 8))
我试过迭代工具。我一直在考虑使用包含多个条件的if-语句,但没有。我希望看到一个键列表(就我的字典“注释”而言)。
发布于 2022-03-24 20:02:55
你已经完成了大部分的逻辑,唯一需要的就是选择45加起来的组合。您可以使用生成器表达式和sum
函数来完成此操作,如下所示:
import itertools
from pprint import pprint
allNotesDict = {"C": 1, "Db": 2, "D": 3, "Eb": 4, "E": 5, "F": 6, "Gb": 7, "G": 8, "Ab": 9, "A": 10, "Bb": 11, "B": 12}
combNotes = list(itertools.combinations(allNotesDict, 8))
result = []
for comb in combNotes:
if sum(allNotesDict[i] for i in comb) == 45:
result.append(comb)
pprint(result)
https://stackoverflow.com/questions/71608398
复制相似问题