相关疑难解决方法(0)

__slots__的用法?

__slots__Python中的目的是什么- 特别是关于我何时想要使用它,何时不想使用它?

python oop slots python-internals

697
推荐指数
10
解决办法
18万
查看次数

如何使用一组通用键正确散列字典以实现重复数据删除目的?

我有一些日志数据,例如:

logs = [
 {'id': '1234', 'error': None, 'fruit': 'orange'},
 {'id': '12345', 'error': None, 'fruit': 'apple'}
]
Run Code Online (Sandbox Code Playgroud)

每个字典都有相同的键:'id''error''fruit'(在本例中)。

我想从此列表中删除重复项,但直接dictset基于基础的方法不起作用,因为我的元素本身就是dicts,不可散列

>>> set(logs)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'
Run Code Online (Sandbox Code Playgroud)

另一种方法是排序并使用 itertools.groupby - 但字典也不具有可比性,因此这也不起作用:

>>> from itertools import groupby
>>> [k for k, _ in groupby(sorted(logs))]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module> …
Run Code Online (Sandbox Code Playgroud)

python python-3.x

18
推荐指数
2
解决办法
1469
查看次数

`namedtuple`在内存使用方面与元组一样高效吗?我的测试说没有

Python文档中指出,其优点之一namedtuple是它与元组一样具有内存效率.

为了验证这一点,我将iPython与ipython_memory_usage一起使用.测试结果如下图所示:

测试表明:

  • 10000000namedtuple使用850 MiBRAM的实例
  • 10000000 tuple73 MiBRAM 周围使用的实例
  • 10000000 dict570 MiBRAM 周围使用的实例

所以namedtuple使用了更多的内存tuple!甚至dict!

你怎么看?我哪里做错了?

python memory collections tuples namedtuple

14
推荐指数
2
解决办法
2843
查看次数