我正在使用python來管理要處理的字符串隊列。它有幾個要求:是否有可排序和可搜索的Python數據結構?
- 每個字符串都匹配到一個優先級,並完全基於該值進行處理。
- 可以動態地將字符串添加到此隊列中,但隊列中不允許有重複的字符串。如果提交副本,則必須標識並忽略它。
那麼有什麼python數據類型,將允許這樣的事情?或者我必須寫我自己的?
如果沒有一個本地的,那麼我想維護兩個結構。
只要這些不會掉落同步它應該解決問題。
我正在使用python來管理要處理的字符串隊列。它有幾個要求:是否有可排序和可搜索的Python數據結構?
那麼有什麼python數據類型,將允許這樣的事情?或者我必須寫我自己的?
如果沒有一個本地的,那麼我想維護兩個結構。
只要這些不會掉落同步它應該解決問題。
這聽起來像一個合理的方法。我會使用set
而不是list
,因爲它具有更高效的會員資格檢查,並且您不需要維護訂單(因爲您在heapq中執行此操作)
絕對應該使用'set' – FogleBird 2011-05-25 17:06:24
有序字典可能有幫助。
看到這個頁面(an ordered dictionary)它指出:
的有序字典保持在鑰匙插入順序。這有時稱爲創建的訂單字典。
字典中存在潛在的用例,它們保持按鍵順序,但排序基於其他標準。
您可以自由使用的setkeys方法改變順序,但你可能更喜歡使用這些不同的標準字典。例如,您可能需要一個字典,按照最後訪問的鍵的順序保存鍵。
所以我將字符串的優先級作爲鍵和值作爲字符串,然後我可以根據鍵的值進行排序?我將如何檢查該字符串是否已存在於隊列中? – 2011-05-26 06:43:44
爲什麼不是字典?或ordereddict? – utdemir 2011-05-25 16:12:04
@utdmr:按值對字典排序並不是很好。 – Daenyth 2011-05-25 16:12:32