我有一個元組列表[(a,b,c,1),(e,a,a,0),etc.]
,其中每個元組由三個字符串和一個整數組成。每個值都存儲在unicode中,即(u'a',u'b',u'c',1)
。我的列表包含98個獨特元組。對於他們的3下式成立:遍歷排序列表返回更多的條目比迭代非排序列表
tuple[2] == "SUPPLEMENTARY PLUMPY",
即:
(u'FRANCE', u'ROUEN (FRANCE)', u'SUPPLEMENTARY PLUMPY', 0)
(u'INDIA', u'MUMBAI (INDIA)', u'SUPPLEMENTARY PLUMPY', 0)
(u'PAKISTAN', u'KARACHI (PAKISTAN)', u'SUPPLEMENTARY PLUMPY', 0)
當我遍歷列表而不排序如下:
for tuple in data:
if tuple[2] == "SUPPLEMENTARY PLUMPY":
print tuple
僅1元組被印刷:
(u'INDIA', u'MUMBAI (INDIA)', u'SUPPLEMENTARY PLUMPY', 0)
當我迭代o同時排序如下:
for tuple in sorted(data):
if tuple[2] == "SUPPLEMENTARY PLUMPY":
print tuple
所有3元組都打印出來!
在我不排序列表時,迭代了94個唯一值,並且如果遍歷排序列表,所有98都被覆蓋。這讓我瘋狂。
我試圖在最小工作示例中複製行爲,但問題沒有出現......問題確實出現的代碼非常龐大,可悲的是無法共享,因此我詳細描述了其描述我希望能引發一些想法!
你們能幫我弄清楚這個嗎?任何猜測爲什麼發生這種情況?
謝謝你在前進, 公園
排序'data'只重新排列列表中的元組(不是元組內的元素),所以'如果tuple [2] =='測試不應該受到排序影響 –
你是如何發現只有當不對列表進行排序時,94個迭代而不是98個? – Skycc
@Skycc我正在將元組導出到Excel中,並將它們用於多個分析 –