python - python uuid 没有给我唯一的标识符?
问题描述
我在python中有这个函数,它读取一个字典,应该循环多次,然后给我一组唯一的ID到一个字典中。
import uuid
import time
def generate_cluster_group(template: dict, number: int):
for i in range(number):
time.sleep(1)
if i == 0:
instance = template
id_ = uuid.uuid4()
instance['id'] = str(id_)
virtualInstances = [template]
else:
ninstance = template
id_ = uuid.uuid4()
ninstance['id'] = str(id_)
virtualInstances.append(ninstance)
return virtualInstances
sample_template = {'id': 'none'}
result = generate_cluster_group(sample_template, 3)
### desired result
result = [{'id': 'fe918527-5f27-4333-a8ec-887d755a4002'},
{'id': '8b97fc31-2e01-4949-8eca-954583f4b8fe'},
{'id': '5fb021e8-d15d-453c-a8c0-9327e7c88634'}]
但我最终得到了相同的 id 重复
actual_result = [{'id': 'fe918527-5f27-4333-a8ec-887d755a4002'},
{'id': 'fe918527-5f27-4333-a8ec-887d755a4002'},
{'id': 'fe918527-5f27-4333-a8ec-887d755a4002'}]
我误解了 uuid 函数的工作原理吗?
解决方案
你在你的功能中犯了几个错误。可以简化为:
def generate_cluster_group(template: dict, number: int):
virtualInstances = []
for _ in range(number):
time.sleep(1)
ninstance = dict(template)
ninstance['id'] = str(uuid.uuid4())
virtualInstances.append(ninstance)
return virtualInstances
推荐阅读
- mongoose - 使用 Mongoose 按名称排序根,按位置排序它们的图像
- django - django def post 方法在 cbv 中不起作用
- apache-spark - spark-streaming-kafka 不适用于 scala-library
- terminal - 有没有办法在 Visual Studio Code 中更改树视图的位置?
- bash - 如何将变量设置为 cat 命令的输出?
- c++ - 使用 std::tuple_element<>::type 在折叠表达式中的另一个 type_traits 检查器中使用时被标记为始终为假
- json - 为什么我不能为变量分配在调试模式下可以看到的 JSON 值?
- json - 在不使用临时结构的情况下实现 Unmarshaller
- javascript - NextJS 在页面/容器/组件更改时不更新,HMR 总是返回成功
- keras - Keras ValueError:预期dense_1 的形状为(3,),但数组的形状为(4,)