我有一个大数组,我想用它来排序。在数组中,数组中的第一项是类别,第二项是需要排序的项。例如:
joe = [['miles', 330], ['points', 5000], ['miles', 400], ['points', 4000], ['trophy', 'explorer'], ['points', 4100]]
我一直在尝试不同的方法来访问列表中的列表,但我不知道如何才能做到这一点。如何访问信息?你知道吗
我试过:
mylist = []
for item in joe:
category = mylist(item[0])
print category
之后,我会将这些值赋给不同的数组(我应该有3个独立的数组并从本质上对数据进行排序)。不过,我现在最关心的是分配数据的最佳方式是什么。你知道吗
为了将数据分成每个类别的列表,字典将帮助您—它可以将单个字符串与数字列表相关联。因此,从一个dict开始,将所有类别与一个空列表相关联-
my_dict = {'miles': [], 'points': []}
等,然后遍历该列表-在每个项目上,您希望将数字附加到与字符串关联的列表中:通过使用dict的
setdefault
方法,可以避免硬编码(或预计算)要放入dict中的所有类别:要对这些列表进行排序,只需迭代dict的值,然后使用list的
sort
方法对它们进行排序:这会给你一个
my_dict
看起来像:我猜你想要的是:
这和效率稍微高一点是一样的:
或者,您可以对
joe
进行就地排序:但是,如果您想将所有的
'miles'
列表放在一起,然后按升序排序呢?你知道吗我应该做这个把戏。。。(现在,希望我已经涵盖了足够的基础,我击中一个你需要的)。你知道吗
啊,现在我知道你想要什么了。为此,你有很多选择。我最喜欢的是
collections.defaultdict
:但另一种选择是对
joe
(例如joe.sort()
)排序并使用itertools.groupby
。你知道吗执行此循环时:
item
长什么样?无需猜测,您可以打印:显然,
item
是主列表中的每个子列表,第一个子列表是['miles', 330]
。你知道吗现在你怎么得到
'miles'
?item[0]
,对吧?item[1]
应该是330
。你知道吗现在,您可以轻松地基于类别构建新列表。我们把这些存到字典里。你知道吗
现在
joedict['miles']
是所有英里的列表,以此类推。你知道吗对每一项进行排序很简单:
这有用吗?你知道吗
相关问题 更多 >
编程相关推荐