簡體   English   中英

遍歷排序列表比遍歷未排序列表返回更多條目

[英]Iterating over a sorted list returning more entries than iterating over non-sorted list

我有一個包含元組[(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

僅打印一個元組:

(u'INDIA', u'MUMBAI (INDIA)', u'SUPPLEMENTARY PLUMPY', 0)

當我在排序時遍歷列表時,如下所示:

for tuple in sorted(data):
    if tuple[2] == "SUPPLEMENTARY PLUMPY":
        print tuple

所有3個元組都已打印!

在98個唯一值中,當我不對列表進行排序時,將迭代94個,如果對排序后的列表進行迭代,則將覆蓋所有98個。 這讓我瘋狂。

我嘗試在一個最小的工作示例中復制行為,但問題並未出現……確實出現問題的代碼非常龐大,令人遺憾的是無法共享,因此我在此進行了詳細的描述。希望激發一些想法!

你們能幫我解決這個問題嗎? 為什么會這樣呢?

預先感謝您,科恩

由於您尚未將實際代碼發布到問題所在,因此除了閑置的,無知的猜測之外,我們幾乎無能為力。

我的閑置,無知的猜測是這樣的:您正在迭代列表的同時在未顯示給我們的代碼中更改列表。 通過在列表周圍添加sorted() ,可以有效地創建列表的副本,因此在您進行操作時僅更改原始列表,而不是要迭代的副本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM