0

我正在寻找是否有任何方法可以将操作应用于对象,并返回包含应用这些操作结果的字典。

这是我到目前为止所达到的

[{"len": len(s), "slice": s[2:4] } for s in [u'hello']][0]

但这感觉很骇人听闻,因为列表推导被认为是与列表一起使用的,而不是与一个对象/一个结果一起使用。

我想知道在 python 中是否有任何直接、更好、更快、最佳的方法来做到这一点。

编辑:我希望只使用一个表达式来解决这个问题。我不想超过一行,并且 [u'hello'] 必须在表达式中只执行一次(而不是每次操作一次)。

这两个不是解决方案:

s = [u'hello']
{"len": len(s), "slice": s[2:4] }

{"len": len([u'hello']), "slice": [u'hello'][2:4] }
4

1 回答 1

4

当它不适合时,你不应该真的强迫单线想法太远。但是,有一个单行解决方案:

(lambda s: {"len" : len(s), "slice" : s[2:4]})(u'hello')

在一行中阅读有点难看,但它只会创建一次“你好”。

于 2013-04-04T01:08:39.360 回答