我有一个2d数组,我想让程序从中搜索.

HabitatGroups = [["amethyst","silver","crystal","copper","red"],#mountain/hill
                 ["black","gold","green"],#swamp/forest
                 ["amethyst","blue","bronze","gold","topaz"],#water adjacent
                 ["blue","brass","copper"],#warm dry
                 ["white","crystal","silver"],#cold
                 ["sapphire","emerald","crystal","amethyst","blue"]]#underground

x=input("Choose a type of dragon")

基本上,我希望程序取x并使用它从x所在的所有列表中随机 Select .假设x为"银色",程序将搜索数组的山地/丘陵和寒冷区域,并随机 Select 不同的选项.我该怎么做呢?

推荐答案

一种可能的解决方案是使用random.choice:

import random

HabitatGroups = [
    ["amethyst", "silver", "crystal", "copper", "red"],  # mountain/hill
    ["black", "gold", "green"],  # swamp/forest
    ["amethyst", "blue", "bronze", "gold", "topaz"],  # water adjacent
    ["blue", "brass", "copper"],  # warm dry
    ["white", "crystal", "silver"],  # cold
    ["sapphire", "emerald", "crystal", "amethyst", "blue"], # underground
]


x = input("Choose a type of dragon: ")

sample = set()
for g in HabitatGroups:
    if x in g:
        for v in g:
            if v != x:
                sample.add(v)

print(random.choice(list(sample)) if len(sample) > 0 else "Not Found")

打印(例如):

Choose a type of dragon: silver
crystal

如果在HabitatGroups中未找到输入,则打印Not Found.

Note:考虑在HabitatGroups中使用集合而不是列表,以加快sample列表的创建.

Python相关问答推荐

ModuleNotFound错误:没有名为flags.State的模块; flags不是包

如何让程序打印新段落上的每一行?

在Django admin中自动完成相关字段筛选

如何在Python中获取`Genericums`超级类型?

dask无groupby(ddf. agg([min,max])?''''

Python全局变量递归得到不同的结果

matplotlib + python foor loop

Matplotlib中的字体权重

在numpy数组中寻找楼梯状 struct

如何合并具有相同元素的 torch 矩阵的行?

从嵌套极轴列的列表中删除元素

如何在一组行中找到循环?

简单 torch 模型测试:ModuleNotFoundError:没有名为';Ultralytics.yolo';

为什么我只用exec()函数运行了一次文件,而Python却运行了两次?

如何在PYTHON中向单元测试S Side_Effect发送额外参数?

在Pandas 中以十六进制显示/打印列?

具有不同坐标的tkinter canvs.cocords()和canvs.moveto()

如何删除剪裁圆的对角线的外部部分

删除另一个div中的特定div容器

在Django REST框架中定义的URL获得404分