如何将指定Python字典转换为目标格式的嵌套列表?
解决Python字典转指定嵌套列表的问题
嘿,我明白你的需求啦——你想把字典里的每个键和它对应的列表元素合并成一个子列表,最终得到嵌套的列表结构对吧?
先说说你现有代码的问题:你原来的代码里,output = [key, value]是把键和整个值列表作为两个独立元素放进子列表里,然后第二个循环又把这些元素逐个拆解出来,所以最后得到的是一个半扁平的混合列表,不是你想要的结构。
最简单的解决方案:列表推导式
用一行代码就能搞定,简洁又高效:
dict1 = {'fred': ['andrew', 'judy'], 'andrew': ['judy', 'george'], 'judy': ['george'], 'george': ['john']} result = [[key] + value for key, value in dict1.items()] print(result)
运行后就能得到你预期的输出:
[['fred', 'andrew', 'judy'], ['andrew','judy', 'george'], ['judy', 'george'], ['george', 'john']]
原理很简单:[key]把单个的键转换成只有一个元素的列表,然后用+运算符和对应的value列表拼接,这样就把键和所有值元素合并成了一个子列表。
用循环实现(更直观)
如果你更喜欢分步的循环写法,也可以这样做:
dict1 = {'fred': ['andrew', 'judy'], 'andrew': ['judy', 'george'], 'judy': ['george'], 'george': ['john']} result = [] for key, value in dict1.items(): # 把键和值列表的元素合并成新的子列表 sub_list = [key] + value result.append(sub_list) print(result)
这个逻辑和列表推导式完全一致,只是把循环展开写了,更容易理解每一步的操作。
内容的提问来源于stack exchange,提问作者Louis




