python-3.x - 如何按键合并两个数组和分组?
问题描述
如何按键合并两个数组和分组?
例子:
my_list = [3, 4, 5, 6, 4, 6, 8]
keys = [1, 1, 2, 2, 3, 5, 7]
预期结果:
[[1, 3, 4], [2, 5, 6], [3, 4], [5, 6], [7, 8]]
解决方案
如果我理解正确,键列表映射到值列表。您可以使用该zip
函数同时遍历两个列表。在这种情况下很方便。还要检查一下漂亮的defaultdict
功能——我们可以用它来填充列表,而无需显式地初始化它。
from collections import defaultdict
result = defaultdict(list) # a dictionary which by default returns a list
for key, val in zip(keys, my_list):
result[key].append(val)
result
# {1: [3, 4], 2: [5, 6], 3: [4], 5: [6], 7: [8]}
然后,您可以使用以下命令转到列表(但不确定为什么要这样做):
final = []
for key, val in result.items():
final.append([key] + val) # add key back to the list of values
final
# [[1, 3, 4], [2, 5, 6], [3, 4], [5, 6], [7, 8]]
推荐阅读
- winforms - Windows 窗体在从工作线程更新 UI 线程中的 DataGridView 时崩溃,同时继续垂直滚动
- c++ - SDL2:无法创建窗口:没有可用的视频设备
- asynchronous - 顺序启动任务,但异步
- c# - 构建时电子应用程序中的自定义 dll 出现错误
- python - 从多维 JSON 文件创建数据库(Api 获取请求)
- ssh - 使用 sshuttle 将流量路由到公司的 VPN 服务器
- javascript - 将文本包装在 javascript 变量中
- windows - 为 cmdlet 提供的每个信息创建变量
- kubernetes-helm - 如何在三元语句中连接变量?
- javascript - 使用 Google Apps 脚本代码根据条件查找和替换