我有一个2D列表,其中每个" row"有一个索引,名称和路径,如[(1L, "bar", "foo/bar"), (2L, "app", "some/app"),]
等。我正在尝试检索"行"从这个给出的2D列表和索引。例如,索引1应返回(1L, "bar", "foo/bar")
。我知道我可以遍历整个列表并比较索引,直到找到对象为止:
my_index = 1
for row in my_list:
if (row[0] == my_index)
return row
return False
我想知道在python中是否有更清洁/更好的方法来做这个,因为我是python的新手。我知道有一个列表的索引方法,它从列表中返回索引,但我不确定如何将其用于2D列表。提前致谢!哦,而且,可以假设每个对象只有一个实例(即:没有重复)
答案 0 :(得分:1)
看起来您最好使用字典而不是列表,因此您的数据将如下所示:
my_dict = {1L: (1L, "bar", "foo/bar"),
2L: (2L, "app", "some/app")}
这允许您通过索引有效地访问每个元素:
>>> my_dict[1]
(1L, 'bar', 'foo/bar')
以下是如何从列表中创建字典:
my_dict = {row[0]: row for row in my_list}
或者在Python 2.6及以下版本中:
my_dict = dict((row[0], row) for row in my_list)
答案 1 :(得分:0)
如果您的列表是静态的(意味着您不打算添加/删除项目),您可能需要考虑对其进行排序。
默认情况下,如果我没错,元组按其第一个元素排序,因此你应该有一个排序列表,其中 my_list [x-1]索引是x
my_list.sort()
row = my_list[my_index - 1]