Python中对含多种数据类型的元组按名称降序排序的方法
解决方案
要解决这个名称位置不固定的排序需求,核心是先从每个子列表中提取出字符串类型的名称,再以此为依据排序。以下是具体实现:
def sort_tuple(input_tuple): # 从子列表中提取唯一的字符串元素(名称) def extract_name(sublist): for item in sublist: if isinstance(item, str): return item # 按名称字母降序排序,结果转回元组 return tuple(sorted(input_tuple, key=extract_name, reverse=True)) # 测试示例 my_test_tuple = ( ["David", 3.14], [34, "Zak"], ["Colin", 54], [34, "Xerxes", True], ["Fred"] ) print(sort_tuple(my_test_tuple))
代码说明
extract_name函数遍历每个子列表,返回其中的字符串元素(默认每个子列表仅含一个名称类字符串)。sorted()通过key参数指定用提取出的名称作为排序依据,reverse=True实现字母降序排列。- 最后将排序后的列表转为元组,匹配预期输出格式。
运行代码后输出结果与预期一致:
(['Colin', 54], ['David', 3.14], ['Fred'], [34, 'Xerxes', True], [34, 'Zak'])
内容的提问来源于stack exchange,提问作者Avengednoob
相关产品推荐
相关产品推荐

