如何在python中将嵌套列表排序为具有唯一值的单独列表? [英] How to sort nested lists into seperate lists with unique values in python?

查看:92
本文介绍了如何在python中将嵌套列表排序为具有唯一值的单独列表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个变量:

unique_val = [1,2,3]
nested_list = [['name1',1],['name2',1],['name3',3],['name4',2],['name5',2],['name6',3]]

基本上,我想在每个唯一值处使用单独的名称列表.我努力将一组嵌套的for循环放在一起无济于事.

Basically I want separate lists of the names at each unique value. I struggled to put together a set of nested for loops to no avail.

理想情况下,输出将是这样的:

Ideally the output would be something like this:

list_1 = ['name1','name2']
list_2 = ['name4','name5']
list_3 = ['name3',name6']

推荐答案

unique_val中为每个项目创建变量不是一个好主意.代替硬编码,所有方法最好使用带有list_1之类的键的dict,因为它可以处理任意数量的变量.

Creating variables for each item in unique_val is not a good idea. Instead of hard coding everything better use a dict with keys like list_1 as it'll handle any number number of variables.

>>> from collections import defaultdict
>>> dic = defaultdict(list)
>>> nested_list = [['name1',1],['name2',1],['name3',3],['name4',2],['name5',2],['name6',3]]
>>> unique_val = [1,2,3]     #better make this a set to get O(1) lookup
>>> for v,k in nested_list:
        if k in unique_val:
            dic['list_'+str(k)].append(v)

#now access those lists:

>>> dic['list_1']
['name1', 'name2']
>>> dic['list_2']
['name4', 'name5']
>>> dic['list_3']
['name3', 'name6']

如果unique_val中有4,则您可能希望list_4是一个空列表,这可以由defaultdict轻松处理:

In case you had a 4 in unique_val then you may expect list_4 to be an empty list, this is easily handled by a defaultdict:

>>> dic['list_4']
[]

这篇关于如何在python中将嵌套列表排序为具有唯一值的单独列表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆