2015-09-08 47 views
0

刪除重複數據我有這樣的陣列數據的從一個數組在Python

data = [20001202.05, 20001202.05, 20001202.50, 20001215.75, 20021215.75] 

list(set(data))刪除重複數據,這給了我

data = [20001202.05, 20001202.50, 20001215.75, 20021215.75] 

但我想刪除重複數據,基於「期間」之前的數字;例如,如果有20001202.0520001202.50,我想保留其中的一個在我的數組中。

回答

8

當你不關心你保持項目的順序,你可以這樣做:

>>> {int(d):d for d in data}.values() 
[20001202.5, 20021215.75, 20001215.75] 

如果你想保持最低項目,我想不出的一個班輪。

這是一個基本的例子,任何人想要添加一個條件的關鍵或值保持。

seen = set() 
result = [] 
for item in sorted(data): 
    key = int(item) # or whatever condition 
    if key not in seen: 
     result.append(item) 
     seen.add(key) 
+0

在更新後的答案,沒有理由使用'排序(數據)'。 – martineau

+0

'set'實際上只是一個帶有鍵但沒有值的'dict' - 兩者都在內部使用散列表 – jonrsharpe

+0

@martineau <如果您只想保留最低項目,例如'data = [1.75, 1.05]'。 – bufh

1
data1 = [20001202.05, 20001202.05, 20001202.50, 20001215.75, 20021215.75] 
for i in data1: 
    if i not in ls: 
     ls.append(i) 
print ls 
+0

您忘記聲明變量'ls',但這仍不能解決問題,因爲它沒有考慮OP的第二個條件。 – cezar

+0

是的,我爲此道歉 –