构建将表达式应用于对象的dict

时间:2013-04-04 00:49:02

标签: python list-comprehension

我正在查看是否有任何方法可以对对象应用操作,并返回一个字典,其中包含应用这些操作的结果。

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

[{"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] }

1 个答案:

答案 0 :(得分:4)

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

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

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