You need to enable JavaScript to run this app. Python如何实现下拉菜单选地区名后将对应编号赋值给变量
优惠活动
大模型
产品
解决方案
定价
更多

Python如何实现下拉菜单选地区名后将对应编号赋值给变量

实现方案

你现在的原始数据是列表嵌套元组的结构,要实现选名称取编号的需求,最便捷的方式是先把该结构转换为地区名称为键、编号为值的字典,后续查询效率比遍历列表高很多,时间复杂度为O(1)。

第一步:转换数据结构

先将你现有的地区映射列表转成可直接查询的字典,代码如下:

# 你现有的地区映射列表
region_list = [(1, 'Andaman and Nicobar Islands'), (2, 'Andhra Pradesh'), (3, 'Arunachal Pradesh'), (4, 'Assam'), (5, 'Bihar'), (6, 'Chandigarh'), (7, 'Chhattisgarh'), (8, 'Dadra and Nagar Haveli'), (37, 'Daman and Diu'), (9, 'Delhi'), (10, 'Goa'), (11, 'Gujarat'), (12, 'Haryana'), (13, 'Himachal Pradesh'), (14, 'Jammu and Kashmir'), (15, 'Jharkhand'), (16, 'Karnataka'), (17, 'Kerala'), (18, 'Ladakh'), (19, 'Lakshadweep'), (20, 'Madhya Pradesh'), (21, 'Maharashtra'), (22, 'Manipur'), (23, 'Meghalaya'), (24, 'Mizoram'), (25, 'Nagaland'), (26, 'Odisha'), (27, 'Puducherry'), (28, 'Punjab'), (29, 'Rajasthan'), (30, 'Sikkim'), (31, 'Tamil Nadu'), (32, 'Telangana'), (33, 'Tripura'), (34, 'Uttar Pradesh'), (35, 'Uttarakhand'), (36, 'West Bengal')]

# 推导式转换为「名称查编号」的字典
region_name_to_id = {name: id for id, name in region_list}

第二步:绑定下拉菜单取值逻辑

不管你用哪种技术栈实现界面,核心逻辑都是通用的:

  • 下拉菜单的选项展示内容直接用地区名称
  • 监听下拉菜单的选中事件,用户选中对应名称后,直接用region_name_to_id[选中的名称]就能拿到对应编号,赋值给你的目标变量即可

桌面端Tkinter示例(Python自带GUI框架)

import tkinter as tk
from tkinter import ttk

# 初始化窗口
root = tk.Tk()
root.title("地区选择")

# 存储选中编号的目标变量
selected_region_id = tk.IntVar()

# 下拉菜单的选项列表
region_names = [name for id, name in region_list]

# 选中事件回调函数
def on_region_select(event):
    selected_name = region_combobox.get()
    # 拿到对应编号赋值给目标变量
    selected_region_id.set(region_name_to_id[selected_name])
    # 测试打印,正式使用可删除
    print(f"选中的地区编号为:{selected_region_id.get()}")

# 创建下拉菜单组件
region_combobox = ttk.Combobox(root, values=region_names, state="readonly")
region_combobox.pack(padx=20, pady=20)
# 绑定选中事件
region_combobox.bind("<<ComboboxSelected>>", on_region_select)

root.mainloop()

Web前端场景示例

如果是Web项目,可将转换后的字典转成JSON传给前端,逻辑如下:

// 后端传入的地区映射对象
const regionMap = {
    "Andaman and Nicobar Islands": 1,
    "Andhra Pradesh": 2,
    // 其余地区按对应关系补充即可
}
// 监听下拉菜单选中事件
document.querySelector("#region-select").addEventListener("change", e => {
    const selectedName = e.target.value
    const targetId = regionMap[selectedName]
    // 赋值给你需要的变量即可
    console.log(targetId)
})

注意事项

你当前提供的地区列表所有名称都是唯一的,直接用上述推导式转换字典即可,如果后续扩展数据存在重名情况,转换时可自行增加去重判断逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 14:15:01