Sha*_*ane 10 python list python-2.7
该列表与此类似:
[["12", "stuA", "stuB"], ["51", "stuC", "stuD"], ..., ["3234", "moreStuff", "andMore"]]
Run Code Online (Sandbox Code Playgroud)
现在我需要仅通过其第一个值(例如"332")来定位项目(获取索引).有没有更好的方法来做到这一点,除了从第一个迭代以与每个值进行比较?
码:
index = 0
for item in thelist:
if item[0] == "332":
print index
index = index + 1
Run Code Online (Sandbox Code Playgroud)
the*_*eye 12
号不反复,你不能找到它,除非列出的是已排序.您可以使用enumerate和列表理解来改进您的代码.
[index for index, item in enumerate(thelist) if item[0] == "332"]
Run Code Online (Sandbox Code Playgroud)
这将给出第一个元素所在元素的索引332.
如果您知道332只发生一次,则可以执行此操作
def getIndex():
for index, item in enumerate(thelist):
if item[0] == "332":
return index
Run Code Online (Sandbox Code Playgroud)
没有人提到这一点,所以我会 - 如果你需要快速找到一个项目的价值(可能不止一次),你应该改变你用来支持你需要的访问类型的数据结构.列表支持按索引快速访问,但不支持按项目值.如果您将信息存储在由列表中的第一个元素键入的dict中,您将能够通过第一个值非常快速地找到行:
# Make a dict from the list of lists:
itemLookup = {item[0]: item for item in theList}
itemLookup["51"] # -> ["51", "stuC", "stuD"]
Run Code Online (Sandbox Code Playgroud)
所以简单的答案是否定的(尽管如果列表已经排序,有一种使用二分法的快速方法),如果你想快速查找,则更长的答案是使用字典.
| 归档时间: |
|
| 查看次数: |
421 次 |
| 最近记录: |