2014-09-03 29 views
0

假設我有一組值如(20140101224466, 20140209226655, ...), ,並且我有一個包含('abcde.test.20140101224466', rbtd.test.20140209226655)的列表。如何從列表中獲取與python中的值相似的值

如何將我的列表與集合進行比較,以僅獲取列表中包含集合中值的值?有沒有更優雅的方法?

+2

你嘗試過這麼遠嗎?另外,你的「設置」是一個真正的Python集合,列表還是元組?你的符號是相當混亂的... – MattDMo 2014-09-03 21:36:06

回答

1
test_set = {20140101224466, 20140209226655, ... } 
test_list = ['abcde.test.20140101224466', 'rbtd.test.20140209226655'] 

solution = [value for value in test_list if int(value.split('.')[-1]) in test_set] 
+0

我認爲這將工作,但是有可能與多個分隔符,如value.split('。_')? – JoshQL 2014-09-03 22:33:54

+0

@JoshQL你可以使用正則表達式分割多個分隔符:http://stackoverflow.com/questions/4998629/python-split-string-with-multiple-delimiters。你需要'輸入re',然後用'int(re.split('。| _',value)[ - 1]')替換int(value.split('。')[ - 1])'' – Mike 2014-09-04 12:08:54

+0

謝謝非常!!!!!! – JoshQL 2014-09-04 14:43:23

0
set1 = {20140101224466, 20140209226655} 
list2 = ['abcde.test.20140101224466', 'rbtd.test.20140209226655'] 

print [i for i in list2 if int(i.split('.')[-1]) in set1] 
# ['rbtd.test.20140209226655', 'abcde.test.20140101224466']