You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改嵌套列表中的对应值?游戏随机选建筑后扣减库存遇阻碍

解决方案

你现有代码的核心问题有两个:

  • 两次调用random.choice()有可能抽到同一个建筑,不符合「选2个不同建筑」的需求
  • 你只提取了建筑的名称字符串,没有和原列表中的库存条目做绑定,后续找不到对应条目修改数值

可以按下面的逻辑修改:

  1. 用random.sample()直接从建筑列表中抽取2个不重复的完整条目,同时保留它们在原列表中的索引,方便后续修改库存
  2. 用户选定建筑后,直接通过索引修改对应位置的库存值即可

示例代码如下:

import random

building_list = [['house', 8], ['hospital', 8], ['shopping-center', 8], ['airport', 8], ['park', 8]]

# 随机抽取2个不重复的建筑,同时记录它们在原列表中的索引
selected = random.sample(list(enumerate(building_list)), 2)
# 拿到两个选项的(索引,建筑信息)
idx1, building1 = selected[0]
idx2, building2 = selected[1]

# 输出供用户选择的两个建筑名称
print("可选建筑:", building1[0], building2[0])

# 假设用户选了第一个建筑,对应索引是idx1
# 扣减库存
building_list[idx1][1] -= 1

# 验证修改结果
print(building_list)

如果你的业务场景要求建筑库存为0后从资源池中移除,扣减后加一层判断即可:

if building_list[idx1][1] == 0:
    del building_list[idx1]

内容的提问来源于stack exchange,提问作者user16472631

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 21:06:03