簡體   English   中英

從元素上的詞典列表中刪除字典

[英]Removing dictionary from list of dictionaries on element

我創建了一個包含字典的列表,該字典由不同的對象填充:變量,pandas系列,甚至pandas DataFrames。 此列表基本上包含有關已打開的單個事務的日志。

如果要滿足某些條件(datetime.now()超過transaction_close_time),我想從此列表中刪除事務。 我嘗試循環執行此操作:

for transaction in transactions:
    if condition is True:
        result = do_sth_with(transaction)
        transactions.remove(transaction)

但由於它包含熊貓對象,因此我聲名狼藉:

File "iterator.py", line 13, in close_trades
transactions.remove(trade)
File "/.../anaconda2/lib/python2.7/site-packages/pandas/core/generic.py", line 731, in __nonzero__
.format(self.__class__.__name__))
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

如果我沒記錯的話,remove方法會嘗試將Series相互比較,然后失敗,從而導致錯誤。 (令人驚訝的是,雖然每次python嘗試刪除dict時都不會出現錯誤,但僅在某些情況下...)

現在,我在考慮是否有更好的方法從列表中刪除那些字典。 每個字典都將其唯一ID作為其元素之一,但是我不確定如何將其從該元素的列表中刪除。

我想我已經找到了解決方案,這要歸功於(我不知道為什么以前沒有找到那個主題):

Python:從列表中刪除字典

無論如何,我所做的是:

for transaction in transactions:
    if condition is True:
        result = do_sth_with(transaction)
        transactions[:] = [d for d in transactions if d.get('trans_id') != transaction['trans_id']]

到目前為止效果很好,我認為它甚至比list.remove()方法還快。

希望它會幫助某人。

暫無
暫無

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

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