Python根据用户选择的配置项填充目标字典的方法
多语言菜单快捷键填充实现
原始数据
以下数据均从CSV文件读取获取:
language = {"english" : {"item1":"File","item2":"Accounts"}, "tamil" : {"item1":"கோப்பு","item2":"கணக்கியல்"}, "Hindi" : {"item1":"Hindi_File","item2":"Hindi_accounts"}} scut = {"user1":[{"id":"file","scut":"Alt+F"},{"id":"accounts","scut":"F5"}], "user2":[{"id":"file","scut":"Ctrl+F"},{"id":"accounts","scut":"F8"}]} menu = {"lbl01":{"id":"file","item1":"","item2":"","scut":""}, "lbl02":{"id":"accounts","item1":"","item2":"","scut":""}} selection = ["english","tamil"] user = ["user1"]
需求说明
基于上述数据按规则填充menu字典,得到如下预期结果:
result = {"lbl01":{"id":"file","item1":"File","item2":"கோப்பு","scut":"Alt+F"}, "lbl02":{"id":"accounts","item1":"Accounts","item2":"கணக்கியல்","scut":"F5"}}
填充规则:
selection列表按顺序存储用户选中的第一语言、第二语言,对应填充菜单项的item1、item2多语言文本user列表存储当前登录用户,需匹配该用户设置的功能快捷键,填充到菜单项的scut字段,匹配依据为菜单项的id- 最终输出结构和原
menu字典完全一致,仅替换空字段为对应值
实现代码
# 预处理:构建当前用户的功能ID-快捷键映射,避免重复遍历查询 current_user = user[0] shortcut_map = {item["id"]: item["scut"] for item in scut[current_user]} # 获取选中的两种目标语言 lang1, lang2 = selection result = {} for label, entry in menu.items(): # 从lbl编号提取对应语言文本的key,如lbl01对应item1、lbl02对应item2 item_num = label[3:].lstrip("0") lang_key = f"item{item_num}" result[label] = { "id": entry["id"], "item1": language[lang1][lang_key], "item2": language[lang2][lang_key], "scut": shortcut_map[entry["id"]] }
代码运行后输出的result和预期结果完全一致,只要保持原有数据格式规范,可直接扩展支持更多菜单项、语言、用户快捷键配置。
内容的提问来源于stack exchange,提问作者tckraomuqnt
相关产品推荐
相关产品推荐

