嗨,我正在學習過程中,所以您可能不得不忍受我。我有兩個我想比較的列表,同時保留任何匹配並追加它們,同時將任何非匹配追加到另一個輸出列表。 繼承人我的代碼:如何比較兩個列表,其中字符串與備用列表中的元素匹配
def EntryToFieldMatch(Entry, Fields):
valid = []
invalid = []
for c in Entry:
count = 0
for s in Fields:
count +=1
if s in c:
valid.append(c)
elif count == len(Entry):
invalid.append(s)
Fields.remove(s)
print valid
print "-"*50
print invalid
def main():
vEntry = ['27/04/2014', 'Hours = 28', 'Site = Abroad', '03/05/2015', 'Date = 28-04-2015', 'Travel = 2']
Fields = ['Week_Stop', 'Date', 'Site', 'Hours', 'Travel', 'Week_Start', 'Letters']
EntryToFieldMatch(vEntry, Fields)
if __name__ = "__main__":
main()
輸出似乎除了它不返回在2輸出列出所有字段的罰款。這是我收到的輸出:
['Hours = 28', 'Site = Abroad', 'Date = 28-04-2015', 'Travel = 2']
--------------------------------------------------
['Week_Start', 'Letters']
我只是不知道爲什麼第二個列表不包括「Week_Stop」。我已經運行了調試器並通過了幾次代碼,但無濟於事。我已經閱讀過有關集合,但我沒有看到任何方式來返回匹配的字段,並放棄不匹配的字段。 此外,即時通訊開放的建議,如果有人知道的方式來簡化這一整個過程,我不是要求免費的代碼,只是在正確的方向點頭。 Python 2.7,謝謝
這是一個有點不清楚的輸出應該是什麼。 1)有效的條目2)無效的條目或錯過的領域? – tmthydvnprt
'count == len(Entry)'對我來說毫無意義。應該是'count == len(Fields)'也許吧? –
現在看看它,它應該以下面所示的一種方式完成,當時我的想法是,如果有更多的條目,那麼當所有的字段被整理出來時,有些條目會被取消選中。這可能是特定於我的情況,但Entry將總是有更多的元素,然後字段。 – SidSpace