首页 > 解决方案 > 动态生成具有唯一名称的字典条目

问题描述

我正在尝试动态生成单元格。每个单元格都有一个名称,定义为字典的键。该值是一个类的实例,包含三个参数(力量、智力、能量)。

import random

class Cell:
    def __init__(self, energy, strength, intelligence):
        self.energy = energy
        self.strength = strength
        self.intelligence = intelligence
cells = {}
k = 1
while k < 100:
    key = "a" + str(k)
    print("Generating cell: " + key)
    cells[key] = Cell(random.randint(1, 100),random.randint(1, 100),random.randint(1, 100))
    k += 1  #Generate cells

我的问题是名字。这段代码对于第一代单元格来说已经足够好了,但是当我需要制作更多单元格时,由于名称冲突,新单元格可以覆盖旧单元格。

有没有办法生成随机但唯一的单元格名称来避免这种冲突?我尝试创建以“a”开头的新名称和尚不存在的最低数字。然而,细胞在我的程序中死亡。我的方法只是填补空白,这将很难确定细胞来自哪一代。

标签: pythonpython-3.x

解决方案


你可以使用 python 的uuid库。

简单示例(断章取义):

import uuid as uuidlib

uuid = str(uuidlib.uuid4())

在你的情况下:

import uuid
import random

class Cell:
    def __init__(self, energy, strength, intelligence):
        self.energy = energy
        self.strength = strength
        self.intelligence = intelligence

cells = {}
k = 1
while k < 100:
    key = str(uuid.uuid4())
    print("Generating cell: " + key)
    cells[key] = Cell(random.randint(1, 100),random.randint(1, 100),random.randint(1, 100))
    k += 1  #Generate cells

推荐阅读