如何遍历字典提取IDF值并生成动态Tabs标签代码?
解决方案
你的现有代码有几个明显问题:
- 硬编码了
IDF01的判断逻辑,无法自动识别其他IDF条目 - 每次循环都会重置
createTabs变量,根本没实现内容追加 - 冗余的
ast.literal_eval(json.dumps(dataDic))操作,json.loads已经能直接解析出字典,完全没必要多此一举
下面是修正后的完整实现:
import json # 读取并解析字典文件 with open("data-dic.txt", 'r') as f: data_dic = json.load(f) # 提取所有IDF编号 idf_list = [] for device_details in data_dic.values(): # 每个设备的格式是[[品牌, IDF编号]],直接取第一个子列表的第二个元素 idf_num = device_details[0][1] idf_list.append(idf_num) # 对IDF编号排序,保证输出顺序稳定(新增条目后也能按数字排序) idf_list.sort() # 生成符合要求的标签字符串 label_items = [] for idf in idf_list: # 转小写作为键,原编号作为值,拼接成"idf0x=IDF0x"格式 label_items.append(f"{idf.lower()}={idf}") labels_str = ", ".join(label_items) # 生成最终的Tabs标签代码 tabs_code = f"{{{{tabs labels=\"{labels_str}\"/}}}}" print(tabs_code)
关键说明
- 直接用
json.load()读取解析文件,比先读文本再loads更简洁高效 - 遍历字典的
values(),无需关心设备的键名(device1/device2这类),扩展性更强 - 用
sort()对IDF编号排序,避免新增条目后输出顺序混乱 - 用
join()方法拼接所有标签项,自动实现内容追加,新增IDF04时会自动加入结果
比如当字典新增"device4": [["Cisco", "IDF04"]]后,输出会自动变成:
{{tabs labels="idf01=IDF01, idf02=IDF02, idf03=IDF03, idf04=IDF04"/}}
内容的提问来源于stack exchange,提问作者Michael S
相关产品推荐
相关产品推荐

