Python - 获得按音乐符号排序的最接近的整数值

时间:2017-08-09 22:57:47

标签: python sorting

给出一个整数列表

values = [7, 9, 10, 11]

如果我想找到最接近

的值
value = 0

我可以简单地使用

closest_value = min(values, key=lambda x:abs(x-value))

并获取

[out]: 7

然而,在我的情况下,values对应于乐谱的整数,如下所示:

notation_values = {'C':0, 'C#':1, 'D':2, 'Eb':3, 'E':4, 'F':5, 'F#':6, 'G':7, 'Ab':8, 'A':9, 'Bb':10, 'B':11}

在这种情况下,0更接近11,因为12会再次'C',只会高出八度。

如何根据此逻辑得到最接近value的整数?

1 个答案:

答案 0 :(得分:2)

听起来你想要的最接近的值 比你的索引更强。 IE:与1最接近的值为0,最接近0的值为11,依此类推(基于您的范围[0-11])。

试试这个:

closest_value = (value - 1) % 12

您应该能够将结果用作notation_values的索引,以便您可以确定相应的音符。