列出 Python 中的唯一对象
Make List of Unique Objects in Python
可以像这样 'fill' Python 中的数组:
> [0] * 10
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
我想利用这个示例原理快速创建相似对象列表:
> a = [{'key': 'value'}] * 3
> a
[{'key': 'value'}, {'key': 'value'}, {'key': 'value'}]
但这些对象似乎相互关联:
> a[0]['key'] = 'another value'
> a
[{'key': 'another value'}, {'key': 'another value'}, {'key': 'another value'}]
鉴于 Python 没有 clone()
方法(这是我寻找的第一件事),我如何创建唯一对象而不需要声明for
循环并调用 append()
添加它们?
谢谢!
一个简单的列表理解应该可以解决问题:
>>> a = [{'key': 'value'} for _ in range(3)]
>>> a
[{'key': 'value'}, {'key': 'value'}, {'key': 'value'}]
>>> a[0]['key'] = 'poop'
>>> a
[{'key': 'poop'}, {'key': 'value'}, {'key': 'value'}]
可以像这样 'fill' Python 中的数组:
> [0] * 10
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
我想利用这个示例原理快速创建相似对象列表:
> a = [{'key': 'value'}] * 3
> a
[{'key': 'value'}, {'key': 'value'}, {'key': 'value'}]
但这些对象似乎相互关联:
> a[0]['key'] = 'another value'
> a
[{'key': 'another value'}, {'key': 'another value'}, {'key': 'another value'}]
鉴于 Python 没有 clone()
方法(这是我寻找的第一件事),我如何创建唯一对象而不需要声明for
循环并调用 append()
添加它们?
谢谢!
一个简单的列表理解应该可以解决问题:
>>> a = [{'key': 'value'} for _ in range(3)]
>>> a
[{'key': 'value'}, {'key': 'value'}, {'key': 'value'}]
>>> a[0]['key'] = 'poop'
>>> a
[{'key': 'poop'}, {'key': 'value'}, {'key': 'value'}]