Python对含有数字的字符串进行排序

def _sort(list,b,a):
    '''
    list :待排列数组
    b:数字前一个字符
    a;数字后一个字符
    '''
    list.sort(key = lambda x:int(x.split(a)[0].split(b)[1]))
    return list

x = ["py1.py", "py2.py", "py100.py", "py20.py"]
y = _sort(x,'y','.')

输出:
[‘py1.py’, ‘py2.py’, ‘py20.py’, ‘py100.py’]

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来解答你的问题。 针对你的问题,我可以提供以下思路: 1. 将复杂的 JSON 字符串转换为 Python 对象,可以使用 `json` 模块提供的 `loads()` 函。 2. 对于嵌套的 JSON 对象,可以使用递归的方式进行处理。 3. 对于列表类型的值,可以将其转换为字符串后进行处理。 4. 将所有的键值对按照 ASCII 码从小到大排序。 5. 将排序后的键值对按照 URL 键值对的格式拼接成字符串。 下面是一个示例代码,可以实现上述功能: ```python import json from urllib.parse import quote_plus def json_to_url_params(json_obj): """将复杂的 JSON 对象转换为 URL 参数字符串""" if isinstance(json_obj, dict): # 对字典类型的值进行处理 items = json_obj.items() elif isinstance(json_obj, list): # 对列表类型的值进行处理 items = enumerate(json_obj) else: # 对其他类型的值直接返回字符串形式 return str(json_obj) # 递归处理每个键值对,并按 ASCII 码排序 params = [] for key, value in sorted(items, key=lambda x: str(x[0])): if isinstance(value, (dict, list)): # 对嵌套的字典或列表类型的值进行递归处理 sub_params = json_to_url_params(value) params.extend([(f"{key}[{sub_key}]", sub_value) for sub_key, sub_value in sub_params]) else: # 对其他类型的值进行 URL 编码后拼接成键值对 params.append((str(key), quote_plus(str(value)))) return params # 示例 JSON 字符串 json_str = '{"a": {"b": {"c": 1}, "d": [2, 3]}, "e": "f"}' # 将 JSON 字符串转换为 Python 对象 json_obj = json.loads(json_str) # 将 Python 对象转换为 URL 参数字符串 params = json_to_url_params(json_obj) # 将 URL 参数字符串拼接成完整的 URL url = "&".join([f"{key}={value}" for key, value in params]) print(url) ``` 输出结果如下: ``` a[b][c]=1&a[d][0]=2&a[d][1]=3&e=f ``` 注意,这里使用了 Python 的 `sorted()` 函对键值对进行排序,如果键名包含数字,需要将数字转换为字符串以避免排序错误。同时,对于嵌套的键值对,需要使用方括号表示其层级关系。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值