Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-获取按音乐符号排序的最接近的整数值_Python_Sorting - Fatal编程技术网

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

Python-获取按音乐符号排序的最接近的整数值,python,sorting,Python,Sorting,给定一个整数列表 values = [7, 9, 10, 11] 如果我想找到最接近的值 value = 0 我可以用 closest_value = min(values, key=lambda x:abs(x-value)) 得到 [out]: 7 然而,在我的例子中,值对应于乐谱的整数,如下所示: notation_values = {'C':0, 'C#':1, 'D':2, 'Eb':3, 'E':4, 'F':5, 'F#':6, 'G':7, 'Ab':8, 'A':9,

给定一个整数列表

values = [7, 9, 10, 11]
如果我想找到最接近的值

value = 0
我可以用

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

[out]: 7
然而,在我的例子中,
对应于乐谱的整数,如下所示:

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'
,只高出一个八度


如何根据此逻辑获取与
最接近的整数?

听起来您希望最接近的值小于索引。IE:最接近1的值是0,最接近0的值是11,依此类推(根据您的范围[0-11])

试试这个:

closest_value = (value - 1) % 12

您应该能够使用结果作为符号值的索引,以便确定相应的音符。

听起来您想要的是小于索引的最接近值。IE:根据您的范围,最接近1的值为0,最接近0的值为11。在这种情况下,最接近值的索引应该类似于“value-1%12”。11和13一样接近于0吗?