2016-09-28 369 views
-7

我有列表這樣的(他們是尺寸值):Python從列表中刪除重複項?

val = [6'6 X 9'8, 6'6" X 9'8"] 

我現在用的是一套功能來刪除重複項:

val = set(val) 

輸出:

{6'6 X 9'8, 6'6" X 9'8"} 

我想如果兩個值相同(數字應該相等),則輸出中的任何值:

either 6'6 X 9'8 or 6'6" X 9'8" 


Separate values are like this ` 6'6 X 9'8` and 6'6" X 9'8" 

如果值完全不同,我想刪除重複項。在我的情況下:數值實際上是相同的,但單位是不同的(參見6號單位,第一個數值6沒有標記,但第二個數值6的標記爲")。但是,考慮到兩個值不同,設置函數。

如果只有數字相同,有什麼辦法可以檢查重複嗎?

+0

這不是一個語法上有效的列表。請張貼我可以粘貼到我的口譯員的清單。 – timgeb

+0

當你定義它時,Python甚至不會識別「list」。此外列表是內置在Python中 - 使用另一個名稱爲您的列表! – coder

+0

沒關係,但你會保留哪一個?與報價或雙引號? –

回答

1

由於您的引號沒有正確關閉,因此無法按預期工作。

如果你改變你的列表中的元素要像字符串:

l = ["6'6 X 9'8", "6'6 X 9'8"] 

代替:

l = [6'6 X 9'8, 6'6" X 9'8"] 

然後說:

print set(l) 

,你會得到輸出你的預期。

P.S .:不要使用'list'作爲變量名,因爲它是一種內置方法。

+0

謝謝。所以首先我需要將我的列表中的值轉換爲字符串?實際上,我正在使用lambda的apply函數來應用這個設置函數,因爲這個列表在我的數據框列中作爲行存在。像這樣:'df ['col'] = df ['col']。apply(lambda x:set(x))' – niranjan

+0

在這種情況下它們需要是字符串,因爲你有一個字母字符「X」。確保打開並關閉每個元素周圍的所有引號,否則會出現語法錯誤。 –

+0

確定在通過我的列表設置功能之前,我需要將列表中的每個值轉換爲正確的字符串? – niranjan