我有一个网址列表。 (我们可以假设列表中的给定URL不超过一次。)
我需要一种快速的方法来确定列表中的两个URL中的哪一个。
我想,我应该从URL创建dict到列表中的位置。
简单的方法(不用手动增加计数器来编写for
循环)将列表中的元素映射到列表中的位置是什么?
我设想的最好的事情是:
order = {}
i = 0
for item in list:
order[item] = i
i += 1
现在检查url1
之前是否url2
,我检查order[url1] < order[url2]
。
这段代码可以缩短吗?
答案 0 :(得分:3)
这会创建您的order
order = {k: v for v, k in enumerate(list)}
示例:
L = list('abc')
您的版本:
order1 = {}
i = 0
for item in L:
order1[item] = i
i += 1
print(order1)
我的版本:
order2 = {k: v for v, k in enumerate(L)}
print(order2)
输出:
{'a': 0, 'b': 1, 'c': 2}
{'a': 0, 'b': 1, 'c': 2}
最好不要将list
用于变量名,因为它是内置的。
enumerate提供了一个迭代,为您提供列表中每次迭代的索引和值。
答案 1 :(得分:1)
如果您想知道特定项目对的首选项,可以使用列表中的index
方法:
a = ['cat', 'dog', 'fish']
a.index('cat') < a.index('dog') # True
a.index('fish') < a.index('dog') # False
答案 2 :(得分:1)
网址列表:
urls = ['A', 'B', 'C', 'D']
指数清单:
index = range(len(urls))
创建字典:
order = dict(zip(urls, index))
测试:
print(order['A'] < order['B']) # True