def actor_combination_statistics(): wb = openpyxl.load_workbook('D:\\pythonProject1\\电影信息统计.xlsx') ws1 = wb['电影信息统计'] ws2 = wb.create_sheet('演员组合参演统计') actor_comb_dict = {} for row in ws1.iter_rows(min_row=2, values_only=True): actors = row[3].split(',') for i in range(len(actors)): for j in range(i + 1, len(actors)): actor_comb = tuple(sorted([actors[i], actors[j]])) if actor_comb not in actor_comb_dict: actor_comb_dict[actor_comb] = [1, [row[1]]] else: actor_comb_dict[actor_comb][0] += 1 actor_comb_dict[actor_comb][1].append(row[1]) if len(actors) >= 3: actor_combList = [] for i in range(len(actors)): for j in range(i + 1, len(actors)): for k in range(j + 1, len(actors)): actor_comb = tuple(sorted([actors[i], actors[j], actors[k]])) actor_combList.append(actor_comb) if len(actor_combList) >= 2: actor_combList1 = sample(actor_combList, 2) for actor_comb1 in actor_combList1: if actor_comb1 not in actor_comb_dict: actor_comb_dict[actor_comb1] = [1, [row[1]]] else: actor_comb_dict[actor_comb1][0] += 1 actor_comb_dict[actor_comb1][1].append(row[1]) else: for actor_comb in actor_combList: if actor_comb not in actor_comb_dict: actor_comb_dict[actor_comb] = [1, [row[1]]] else: actor_comb_dict[actor_comb][0] += 1 actor_comb_dict[actor_comb][1].append(row[1]) ws2['A1'] = '演员组合' ws2['B1'] = '演员组合参演电影数量' ws2['C1'] = '演员组合参演电影列表' row_num = 2请详细地解释上述代码
时间: 2024-02-26 13:52:43 浏览: 81
这段代码的功能是对电影信息统计表格中的演员组合进行统计,并将结果输出到一个新的 Excel 表格中。
1. 首先,通过 openpyxl 库中的 `load_workbook` 方法读取 Excel 表格文件,得到一个 Workbook 对象,并将第一个工作表赋值给 `ws1` 变量,同时创建一个名为 `演员组合参演统计` 的新工作表,并将其赋值给 `ws2` 变量。
2. 定义一个字典 `actor_comb_dict`,用于存储演员组合及其参演电影数量和电影列表。
3. 对 `ws1` 工作表的每一行进行遍历,通过 `iter_rows` 方法获取每一行的数据,并将演员名称按逗号分隔成列表 `actors`。
4. 对于每个演员列表中的两个演员,将其组合成一个元组 `actor_comb`,并将其按照字典的方式存入 `actor_comb_dict` 中。如果该组演员组合在字典中不存在,则将其添加到字典中,并将其参演电影数量设为 1,参演电影列表设为当前电影名称;否则将其参演电影数量加 1,参演电影列表加上当前电影名称。
5. 对于演员列表中包含三个或三个以上演员的电影,对其中的三个演员进行组合,将组合结果存入列表 `actor_combList` 中。如果 `actor_combList` 中的元素个数大于等于 2,则从中随机选取两个元素,将其按照字典的方式存入 `actor_comb_dict` 中。否则,将 `actor_combList` 中的每个元素按照字典的方式存入 `actor_comb_dict` 中。
6. 在新工作表 `ws2` 的第一行分别添加列名为 `演员组合`、`演员组合参演电影数量` 和 `演员组合参演电影列表`。
7. 遍历 `actor_comb_dict` 字典中的所有键值对,在新工作表 `ws2` 中新增一行,分别将演员组合、演员组合参演电影数量和演员组合参演电影列表输出到对应的单元格中。最后将行号 `row_num` 加 1,以便输出下一行数据。
阅读全文