【问题标题】:Is there a way to retrieve a python object from one of its attributes? (Python)有没有办法从它的一个属性中检索一个 python 对象? (Python)
【发布时间】:2021-04-16 00:01:05
【问题描述】:

我是一个制作不和谐机器人的初学者,对于一个命令,我有对象及其遇到的机会,使用这种格式:

chances = 5, 5
objects = array[0].name, array[1].name
location = [v for v, d in zip(objects, chances) for i in range(d)]
for i in range(1):
    print(random.choice(location))

我想将对象保存为变量以在另一个命令中使用,特别是访问另一个属性以获取信息。但是,由于对象使用它的一个属性,而不是对象本身,我想知道在 python 中是否可以从它的一个属性中检索对象,在我的例子中是名称,其中没有对象具有相同的名称。我也对替代解决方案持开放态度,作为初学者,我相信还有其他解决方案可能更有效

【问题讨论】:

    标签: python discord


    【解决方案1】:

    我不相信这是可能的。但是,您可以创建一个通过该名称引用对象的字典。像这样

    chances = 5, 5
    objects = array[0].name, array[1].name
    object_name_to_object = {}
    for val in array:
         object_name_to_object[val.name] = val
    location = [v for v, d in zip(objects, chances) for i in range(d)]
    for i in range(1):
         objct= object_name_to_object[random.choice(location)]
    print(objct)
    

    或者根本不使用这个名字:

    chances = 5, 5
    objects = array[0], array[1]
    location = [v for v, d in zip(objects, chances) for i in range(d)]
    for i in range(1):
          print(random.choice(location))
    

    【讨论】:

      【解决方案2】:

      我相信您可以使用轮盘赌选择来完成这项任务。这里有一个简单的实现Fitness proportionate selection (roulette wheel selection) in Python

      【讨论】:

        猜你喜欢
        • 2020-08-05
        • 2012-07-19
        • 2023-03-23
        • 1970-01-01
        • 1970-01-01
        • 2022-01-16
        • 2019-03-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多