python - 动态生成具有唯一名称的字典条目
问题描述
我正在尝试动态生成单元格。每个单元格都有一个名称,定义为字典的键。该值是一个类的实例,包含三个参数(力量、智力、能量)。
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”开头的新名称和尚不存在的最低数字。然而,细胞在我的程序中死亡。我的方法只是填补空白,这将很难确定细胞来自哪一代。
解决方案
你可以使用 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
推荐阅读
- asp.net-mvc - 无法加载包含大量记录的部分视图
- python - Python+Firebird 动态 SQL 错误令牌未知
- python - 从数组索引中获取多个字符串 - PYTHON
- unit-testing - XUnit mocked db connection dapper error, 'Object is not set to an instance of an object' 执行 sql 语句时
- regex - 正则表达式代码,Python-2 字母数字
- c# - 如何使用 C#.Net 将内容从 Excel 更新到 MySql 数据库
- unity3d - Play 游戏的统一性问题
- php - Laravel Route 资源命名函数
- ios - 如何检测应用内购买的警报弹出何时关闭并完成购买
- javascript - 如何在不循环的情况下根据多个条件更新 MongoDB 集合