2017-05-27 74 views
-1

我有一個列表的列表條件根據列表中的重複元素

my_list = [['1996', 0.23, 0.56], ['1997', 0.45, 0.32], ['1996', 0.15, 0.34],['1997', 0.34, 0.13]] 

我需要將它寫入到一個文本文件,以便它看起來像

1996|Area|None|0.23|0.56 

1997|Area|None|0.45|0.32 

1996|Area|Metro|0.15|0.34 

1997|Area|Metro|0.34|0.13 

我寫了下面代碼

for data in my_list: 
    data.insert(1, Area) 
    data.insert(2, None) 
    file.write("|".join(map(str, data)) + '\n') 

這不是給我如何過正確的輸出,如何更改每當我encoun的「無」值設置爲「新城」又'1996'。

感謝您的幫助

+0

@Moinuddin Quadri雖然1996年沒有遇到第二次2,3位仍然是區域和無,當遇到下一次我需要第三個元素從無更改爲地鐵,並繼續作爲直到1996年再次遇到 – StarLord

回答

1

使用一組這樣你就可以知道哪些幾年已經在你的數據。

year_set = set() 

for data in my_list: 
    data.insert(1, Area) 
    if data[0] in year_set: 
     data.insert(2, 'Metro') 
    else: 
     data.insert(2, None) 
     year_set.add(data[0]) 
    file.write("|".join(map(str, data)) + '\n') 
2

你應該創建一個臨時list(或set),以保持其中添加了多年的軌道,並設置了「無」和「地鐵」因此:

  • 如果今年是中列表中,設置「地鐵」
  • 如果今年不在列表中,增加一年到列表中,並設置爲「無」

因此你的代碼應該是這樣的:

year_list = [] 
for data in my_list: 
    year = data[0] 
    data.insert(1, Area) 
    if year in year_list: 
     data.insert(2, "Metro") 
    else: 
     data.insert(2, None) 
     year_list.append(year) 
    file.write("|".join(map(str, data)) + '\n') 
+0

這個追加所有其他條目的地鐵,每次我遇到1996年地鐵也都需要從地鐵列表中相應地更改。 – StarLord

+0

@ArnabSharma根據你在被問及的問題中提到的問題,「這個問題不是正確的行爲嗎?」如果我再次遇到'1996',我該如何將'None'值更改爲'Metro'。也沒有提到'metro'列表。我看到的只是這裏提到的「Metro」字符串。 –

+0

@ArnabSharma如果你想得到不同的結果,那麼你在這裏提到的,請打開一個新的問題,但我試圖首先自己實現它。它會幫助你學習新東西 –