如何在Python中反转str()方法的效果?

Jon*_*nas 0 python dictionary list

我想知道python是否有一个内置方法来反转str()方法.

示例:MyList包含字典,字符串和整数.

MyList = [{1: 'one'}, 'blarg', 964]
Run Code Online (Sandbox Code Playgroud)

假设我想按大小(长度)排列这些项目.这是我的功能

def sort_by_length(mylist):
    newlist = []
    final = []
    for i in mylist:
        newlist.append(str(i))
    final = list(reversed(sorted(newlist, key=len)))
    for n,i in enumerate(final):
        if i.isdigit() == True:
            final[n]=int(i)
        else:
            pass
    return final
Run Code Online (Sandbox Code Playgroud)

如果我在MyList上运行此函数

sort_by_length(MyList)
Run Code Online (Sandbox Code Playgroud)

目前的输出是:

["{1: 'one'}", 'blarg', 964]
Run Code Online (Sandbox Code Playgroud)

预期产量:

[{'1': 'one'}, 'blarg', 964]
Run Code Online (Sandbox Code Playgroud)

我能够从字符串中更改整数,但字典仍然是引号中的字符串(显然因为我只将整数而不是字典的str()反转).

我怎样才能将这个元素反转回字典?

sty*_*ane 6

您需要使用key参数sorted来指定要调用的函数.这里lambda表达式可以正常工作.

>>> MyList = [{1: 'one'}, 'blarg', 964]
>>> sorted(MyList, key=lambda x: len(str(x)), reverse=True)
[{1: 'one'}, 'blarg', 964]
Run Code Online (Sandbox Code Playgroud)


syn*_*nym 5

通常str()并不意味着提供可以解码回 python 对象的东西。它旨在提供人类可读的字符串。如果要编码为机器可读的字符串,请使用json 之类的内容