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

时间:2016-03-30 09:59:16

标签: python list dictionary

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

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

MyList = [{1: 'one'}, 'blarg', 964]

我想说我想按照尺寸(长度)排列这些项目。 这是我的功能

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

如果我在MyList上运行此功能

sort_by_length(MyList)

目前的输出是:

["{1: 'one'}", 'blarg', 964]

预期产出:

[{'1': 'one'}, 'blarg', 964]

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

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

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:4)

通常heavier(X, Y) :- is_heavier(X, Y). heavier(X, Y) :- is_lighter(Y, X). lighter(X, Y) :- heavier(Y, X). is_heavier(horse, mouse). is_lighter(bird, horse). 并不意味着可以将某些内容解码回python对象。它旨在提供一个人类可读的字符串。如果要编码为机器可读的字符串,请使用json