Python如何将元组格式str转为dict并生成按值倒序的OrderedDict
实现方案
方案1:使用ast.literal_eval安全解析(推荐)
该方案利用Python内置的字面量解析工具直接转换字符串,代码简洁容错性高,不会执行恶意代码,安全性远高于直接使用eval。
完整代码如下:
import ast from collections import OrderedDict # 你的原始字符串 raw_str = '(1, 7.0), (2, 2.0), (3, 3.0), (4, 4.0), (5, 7.0), (6, 6.0), (7, 8.0), (8, 5.0)' # 字符串转字典 tuple_seq = ast.literal_eval(raw_str) target_dict = {int(k): float(v) for k, v in tuple_seq} # 按你提供的逻辑排序生成OrderedDict sorted_result = OrderedDict(sorted(target_dict.items(), key=lambda x: x[1], reverse=True)) # 输出验证 print(sorted_result)
输出结果和你要求的格式完全一致。
方案2:手动分割字符串(无额外依赖)
如果场景限制不能使用ast模块,可以用字符串切割的方式手动处理:
from collections import OrderedDict raw_str = '(1, 7.0), (2, 2.0), (3, 3.0), (4, 4.0), (5, 7.0), (6, 6.0), (7, 8.0), (8, 5.0)' # 清洗并分割字符串 clean_str = raw_str.replace('(', '').replace(')', '').replace(' ', '') item_list = clean_str.split(',') # 生成目标字典 target_dict = {} for idx in range(0, len(item_list), 2): key = int(item_list[idx]) value = float(item_list[idx + 1]) target_dict[key] = value # 排序生成OrderedDict sorted_result = OrderedDict(sorted(target_dict.items(), key=lambda x: x[1], reverse=True))
内容的提问来源于stack exchange,提问作者NexusProx
相关产品推荐
相关产品推荐

