我是一个python新手,我一直在尝试根据列表中的值对元组中的值进行排序(和提取),但到目前为止,我的代码似乎非常慢。你知道吗
所以,我有一个这样的清单:
x = ["d5b44796d43c4bf5a0f252aeb49738f5", "04d0e11f8ceb4b128fa723181369ba1a", "6244dd8bfee44a61800a25d9f2e6f743", "662ae26640a44a37816daa6e85ef4972", "7d5e1f59f7984495877a059bea643954"]
我有这样一个元组:
y = [(31, u'dir/04d0e11f8ceb4b128fa723181369ba1a.mov'), (32, u'dir/d5b44796d43c4bf5a0f252aeb49738f5.pdf'), (66, u'dir/6244dd8bfee44a61800a25d9f2e6f743.jpg'), (34, u'dir/662ae26640a44a37816daa6e85ef4972.doc'), (33, u'dir/7d5e1f59f7984495877a059bea643954.ppt')]
如果x
中的元素存在于y[i][1]
,我想从y
获取id
。比如说:
id_list=[]
for i in x:
for j in y:
if i in j[1]:
try:
id_list.append(j[0])
except:
pass
break
else:
pass
我得到:
id_list = [32, 31, 66, 34, 33]
此外,结果集必须保持x
中的顺序。
上面的循环就是这样做的。你知道吗
问题是上面的代码非常慢(真惭愧!)-我的x
是在1000年,所以是y
。你知道吗
所以我想我的问题是,是否有更好的方法来编写上述代码?我在这里考虑迭代器,但不完全确定在这种情况下如何编写迭代器。你知道吗
如果要保持x中的顺序,需要提取
y
中的所有ID并将它们放入一个集合中,然后对x进行迭代以检查集合中是否有项:如果x是
dict
,这可以得到改进,因为查找会更快,所以我们将使用OrderedDict
来保持顺序:相关问题 更多 >
编程相关推荐