假設我有一組值如(20140101224466, 20140209226655, ...)
, ,並且我有一個包含('abcde.test.20140101224466', rbtd.test.20140209226655)
的列表。如何從列表中獲取與python中的值相似的值
如何將我的列表與集合進行比較,以僅獲取列表中包含集合中值的值?有沒有更優雅的方法?
假設我有一組值如(20140101224466, 20140209226655, ...)
, ,並且我有一個包含('abcde.test.20140101224466', rbtd.test.20140209226655)
的列表。如何從列表中獲取與python中的值相似的值
如何將我的列表與集合進行比較,以僅獲取列表中包含集合中值的值?有沒有更優雅的方法?
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]
我認爲這將工作,但是有可能與多個分隔符,如value.split('。_')? – JoshQL 2014-09-03 22:33:54
@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
謝謝非常!!!!!! – JoshQL 2014-09-04 14:43:23
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']
你嘗試過這麼遠嗎?另外,你的「設置」是一個真正的Python集合,列表還是元組?你的符號是相當混亂的... – MattDMo 2014-09-03 21:36:06