def get_total_keys(_midi_list): _total_keys = set() for _press_time_dict in _midi_list: for step in _press_time_dict.values(): for item in step: _total_keys.add(item[0]) return _total_keys
时间: 2024-03-30 22:34:53 浏览: 20
这段代码的作用是计算midi文件中共使用了哪些按键。输入参数_midi_list是一个列表,列表中的每个元素都是一个按键按下的时间和时值的字典,每个字典的key为按键按下的时间,value为一个列表,其中每个元素为一个按键和对应的时值。函数使用嵌套的循环遍历每个字典中的所有按键,将这些按键存储在一个set集合_total_keys中,并返回该集合。
相关问题
def get_total_keys(_midi_list):#遍历字典中的所有按键来看midi中用了哪些按键 _total_keys = set() for _press_time_dict in _midi_list: for step in _press_time_dict.values(): for item in step: _total_keys.add(item[0]) #将按键和对应的时值列表中的按键取出来,添加到_total_keys中 return _total_keys
这段代码定义了一个名为 `get_total_keys` 的函数,该函数接受一个 `_midi_list` 参数,该参数预计是一个包含多个 MIDI 文件信息的列表。函数使用 `_total_keys` 集合来存储所有在 MIDI 文件中出现的按键。然后,函数遍历 `_midi_list` 中的每个 MIDI 文件,并使用 `values()` 函数来获取每个文件中的所有按键。对于每个按键,函数将其添加到 `_total_keys` 集合中。最后,函数返回 `_total_keys` 集合,其中包含所有 MIDI 文件中出现过的按键。
_press_time_dict = defaultdict(list)
`defaultdict` 是 Python 内置的一个类,它继承自 `dict` 类,但可以指定一个默认值类型,当访问一个不存在的键时,会自动创建一个默认值作为该键的值。这个类通常用于统计词频、分组计数等场景。
这段代码中,`defaultdict(list)` 创建了一个默认值类型为列表的 `defaultdict` 对象 `_press_time_dict`。也就是说,当访问一个不存在的键时,会自动创建一个空列表作为该键的值。这个 `_press_time_dict` 对象用于记录按键按下的时间(毫秒级),每个键对应的值是一个时间戳列表,记录了该键每次按下的时间。
例如,可以使用以下代码向 `_press_time_dict` 中添加数据:
```python
from collections import defaultdict
_press_time_dict = defaultdict(list)
# 添加数据
_press_time_dict['a'].append(1000)
_press_time_dict['b'].append(2000)
_press_time_dict['a'].append(3000)
print(_press_time_dict) # 输出 defaultdict(<class 'list'>, {'a': [1000, 3000], 'b': [2000]})
```
这个例子中,我们首先创建了一个默认值类型为列表的 `defaultdict` 对象 `_press_time_dict`。然后,我们向 `_press_time_dict` 中添加了三个键值对,分别是 `'a': [1000]`、`'b': [2000]` 和 `'a': [3000]`。由于 `'a'` 键已经存在,因此会将时间戳 `3000` 添加到该键对应的列表中。最终,我们得到了一个包含键 `'a'` 和 `'b'` 的 `_press_time_dict` 对象,每个键对应的值是按键按下的时间戳列表。