python-3.x - 如何重新排列第一个元素包含多个值的列表列表,并在重复第一个元素的同时创建一个新的列表列表?
问题描述
给定一个列表列表:
list_format = [['a', 'c', 'f', 'b'], ['j', 'l', 'o', 'c'], ['q', 's', 'v', 'e']]
'c', 'f', 'b' 必须映射到 'a'
'l', 'o', 'c' 必须映射到 'j'
's', 'v', 'e' 必须映射到'q'
输出应如下所示:
[['a','c'],['a','f'],['a','b'],['j','l'],['j','o'],['j','c'],['q','s'],['q','v'],['q','e']]
到目前为止我已经尝试过:
list_dict = {element[0]:element[1:] for element in list_format}
newer_lst = []
for key, value in list_dict.items():
newer_lst.append((key, value))
newer_lst
给我元组的输出:
[('a', ['c', 'f', 'b']), ('j', ['l', 'o', 'c']), ('q', ['s', 'v', 'e'])]
我在这方面比较新,并试图重新安排,任何建议都会很棒,被反复试验困住了好几天(无数次搜索谷歌并不断谷歌搜索。我觉得我已经接近但似乎无法把它放在一起.
解决方案
您不需要创建循环,只需在子数组上循环并即时将新子数组附加到主输出数组,例如 new_list.append([lst[0], item])
new_list = []
for lst in list_format:
for item in lst[1:]:
new_list.append([lst[0], item])
print(new_list)
#output
#[['a', 'c'], ['a', 'f'], ['a', 'b'], ['j', 'l'], ['j', 'o'], ['j', 'c'], ['q', 's'], ['q', 'v'], ['q', 'e']]
推荐阅读
- r - 从其他文件夹导入excel文件慢
- javascript - 具有 2 个参数真/假资格的函数
- mysql - MySQL程序问题,让我上次输入的用户重新输入
- javascript - 在 Mapboxgl.js 的弹出窗口中添加一个按钮
- reactjs - 在执行子组件之前等待对象可用
- amazon-ec2 - 具有 IOT 数据的可扩展超级账本 v1.4 的应用程序架构
- javascript - 如何将 HTML 与 Python 结合起来?
- testing - 测试注册表 - 问题是关于使用空格键
- reactjs - 在 api 中修改 Fetch 结果
- javascript - Ajax 成功函数和变量作用域