我有一个问题,我从网站上抓取数据并从表中取出数据并将其放入元组列表中。是这样的:a = [("RAM", "8GB"),("HDD", "2TB"),("SSD","1TB")]现在我想通过搜索第一个元素来获取第二个元素的值(或者只是索引,我可以这样获取),就像使用 list.index() 函数时一样。我知道我可以使用 for 循环或使用 dict 来对所有内容进行分类,但我感兴趣的是是否有其他方法或已经存在的函数来处理这个问题。
2 回答
DIEA
TA贡献1820条经验 获得超2个赞
不使用循环就无法在列表中执行搜索。即使是内置函数,例如inor .index(),实际上也是具有 O(n) 时间复杂度的循环。例如:
>>> a = [("RAM", "8GB"),("HDD", "2TB"),("SSD","1TB")]
>>> [v for k, v in a if k == "HDD"]
['2TB']
您可以使用 adict或 aset将其减少到 O(1):
>>> dict(a)["HDD"]
'2TB'
呼啦一阵风
TA贡献1802条经验 获得超6个赞
除了在列表中使用 dict 之外,您还可以使用 next 和理解:
>>> next(v for k, v in a if k == "HDD") '2TB'
如果该值也不存在,这也允许您提供默认值。
添加回答
举报
0/150
提交
取消