如何用Python 3.x的random.choice随机选取符合子数组条件的对象数组元素
解决方案
可以通过「筛选符合条件的对象 + 随机选取」两步实现需求:
1. 筛选符合条件的纹理对象
先用列表推导式从原数组中过滤出所有apply_to属性包含'wall'的对象:
import random textures = [ {"id": 1, "name": "cement", "apply_to": ["wall", "basement"]}, {"id": 2, "name": "fabric", "apply_to": ["window"]}, {"id": 3, "name": "brick", "apply_to": ["wall"]}, # 其他更多对象... ] # 过滤出可应用于wall的纹理 wall_eligible_textures = [tex for tex in textures if 'wall' in tex['apply_to']]
2. 随机选取目标对象
用random.choice()从筛选后的列表中随机抽取一个对象即可。建议先判断筛选结果是否为空,避免出现IndexError:
if wall_eligible_textures: selected = random.choice(wall_eligible_textures) print(selected) # 随机输出id为1或3的对象(或其他符合条件的对象) else: print("没有找到可应用于wall的纹理对象")
内容的提问来源于stack exchange,提问作者Jebathon
相关产品推荐
相关产品推荐

