2017-07-24 172 views
-2

我有兩個元組列表(字符,百分比)按百分比排序。最終,我需要繼續將字符附加到List_A,直到它達到預定義的長度(該邏輯已經被處理)。Python - 比較兩個元組列表

實施例:

List_A

('a', 0.077) 
('b', 0.070) 
('c', 0.020) 
('d', 0.015) 
('z', 0.010) 

List_B

('x', 0.060) 
('y', 0.059) 
('z', 0.055) 
('a', 0.030) 
('b', 0.010) 

我需要:

1)選擇從List_B一個字符,看看是否存在於List_A

2)如果是這樣,計算,如果它在List_B百分比>它在List_A

3%)如果百分比越大,字符追加到List_A

所以,在這個例子中,「a」和' b」永遠不會得到,因爲List_B個< List_A比例追加到List_A

‘X’和‘Y’永遠不會得到追加到List_A由於他們List_A不存在

‘Z’將可能會多次追加到List_A,直到它在List_A中的百分比> List_B中的百分比

循環和百分比邏輯已經在此功能之外進行了處理。我如何將這三個條件應用於這兩個列表?

希望上面的例子中的輸出是List_A與附加另一個 'Z',是這樣的:

('a', 0.077) 
('b', 0.070) 
('c', 0.020) 
('d', 0.015) 
('z', 0.010) 
('z', 0.055) 

謝謝!

+4

只是讓它成爲一本字典。它會讓你的生活更輕鬆。另外,請告訴我們你做了什麼。你有近100個聲望,所以你現在應該知道SO不是代碼編寫服務。你可以繼續列出你的要求,直到奶牛回家,但一旦你表明你真的試圖解決你自己的問題,人們會更加容易接受。作爲參考,請看[問]。 –

回答

1

首先,您應該創建一個字典,將List_A中的字符映射到其百分比值。他們已經在正確的格式(假設沒有重複),所以你可以使用dict函數。然後,遍歷List_B中的元素,查找字典中的值,並將它們追加到列表中。另外,不要忘記用新(更高)的百分比更新字典。

dict_a = dict(List_A) 
for c, p in List_B: 
    if c in dict_a and dict_a[c] < p: 
     List_A.append((c, p)) 
     dict_a[c] = p 
+0

我想我明白你在做什麼,感謝你幫助我。 – yodish