我正在查看是否有任何方法可以对对象应用操作,并返回一个字典,其中包含应用这些操作的结果。
这是我到目前为止所得到的
[{"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] }
答案 0 :(得分:4)
当它不合适时,你不应该真的强迫单线理念。但是,有一个单行解决方案:
(lambda s: {"len" : len(s), "slice" : s[2:4]})(u'hello')
在一行中阅读有点难看,但它只会创建一次“你好”。