python - 如何删除列表中的dict(JSON对象)?
问题描述
我正在从我的地区发行列表中删除具有不同 m_y(month_year 例如 12_2018)的电影发行。我在 delete 方法中传递其完整的电影对象以从列表中删除该对象,这是我的代码:
def remove_release_object(self, release_object, month_year):
# Quick fix, to delete this exact item, set ti back
release_object['m_y'] = month_year
if release_object['region'] == 1:
self.releases[month_year]["europe"].remove(release_object)
if release_object['region'] == 2:
self.releases[month_year]["north_america"].remove(release_object)
if release_object['region'] == 3:
self.releases[month_year]["australia"].remove(release_object)
if release_object['region'] == 4:
self.releases[month_year]["new_zealand"].remove(release_object)
if release_object['region'] == 5:
self.releases[month_year]["japan"].remove(release_object)
if release_object['region'] == 8:
# Worldwide release really only applies to the big region (na, eu, jp, aus, nz)
self.releases[month_year]["europe"].remove(release_object)
self.releases[month_year]["north_america"].remove(release_object)
self.releases[month_year]["australia"].remove(release_object)
self.releases[month_year]["new_zealand"].remove(release_object)
self.releases[month_year]["japan"].remove(release_object)
在调用 remove() 之后它仍然不起作用,我什至尝试设置一个快速修复来放置对象,就像它最初看到旧的 m_y 一样,但仍然没有任何东西被删除
解决方案
__eq__
当您想要删除一个列表中的一项时调用 Python 。这是一个帮助您理解它的示例。
class A(object):
def __eq__(self, other):
print('eq was called')
return True
l = [A()]
print(l)
l.remove(A())
print(l)
这意味着您必须保证 release_object 具有可比性,并且 release_object 等于 movie_object。
还有一点,dict 是可比较的,{'a': 1} 等于另一个 {'a': 1}。这意味着您的 release_object 不等于 movie_object。你可以试试:
l = [{'a': 1}]
print(l)
l.remove({'a': 1})
print(l)
所以你应该检查你的代码,并检查release_object和movie_object之间的区别。
推荐阅读
- javascript - 在 Visual Studio Code 中使用装饰器时出错
- http-live-streaming - IDM 不开始下载的 JWplayer 背后的技术细节是什么?
- mysql - 根据时间戳的最大列值
- amazon-s3 - Monitor S3 - 如果自最后一个文件写入后超过 5 分钟,则发送警报
- android - Flutter 无法处理方法调用 E/MethodChannel#flutter/platform(8279):
- wordpress - 我们可以在 WordPress 网站旁边有一个 ASP.NET Core 应用程序吗?
- ios - 集合视图规模流布局
- visual-studio - 将 Visual Studio 解决方案连接到不同的 Azure Devops 项目
- oracle - Oracle 12 获取更改表(插入、删除或更新记录)
- php - 在特定的 HTML 表格单元格中显示来自 DB 的值