import re def is_numeric_key(key): # 这个正则表达式匹配由数字、点、括号中的数字或单个字母(小写或大写)组成的字符串, # 字母后跟数字,或数字后跟字母,单个字母后跟点,但不能是字母-数字-字母的组合 pattern = r'^[\d.]+$|^\(\d+\)$|^(\d+)$|^[a-zA-Z]$|^[a-zA-Z]\d+$|^\d+[a-zA-Z]$|^[a-zA-Z]\.$' return re.match(pattern, key) is not None def process_dict(data): if not isinstance(data, dict): return data result = {} numeric_keys = [] non_numeric_keys = {} for key, value in data.items(): if is_numeric_key(key): numeric_keys.append((key, value)) else: non_numeric_keys[key] = value if numeric_keys: result['items'] = [process_dict(item[1]) for item in sorted(numeric_keys)] for key, value in non_numeric_keys.items(): if isinstance(value, list): processed_list = [] for item in value: if isinstance(item, dict): # 处理字典中只有一个键值对的情况 if len(item) == 1: processed_item = process_dict(list(item.values())[0]) else: processed_item = process_dict(item) else: processed_item = process_dict(item) # 如果处理后的项是只包含一个元素的列表,则展平它 if isinstance(processed_item, list) and len(processed_item) == 1: processed_item = processed_item[0] processed_list.append(processed_item) result[key] = processed_list else: result[key] = process_dict(value) if len(result) == 1 and 'items' in result: return result['items'] return result data={ } process_dict()