我正在尝试在Python中找到一个等效的ES6功能。
在JS中,我有类似的东西:
let obj = {['composed' + objKey()]: true}
我希望能够在Python中的dict构造函数中编写字典键,例如:
MyClass.render(storyboard=dict([getAuthor()]=self.authorStoryData()))
[getAuthor()]
应该生成该函数返回值的字典键。或者,如果它是可变的,它的价值等......
有没有在Python中这样做?
我已经尝试过做dict=('%s' % (variable,)=self.content
但是却犯了错误。
答案 0 :(得分:3)
就像在JavaScript中使用对象文字一样,您应该在Python中使用字典文字。这将是Python中的完全等价物:
def objKey():
return 'foo'
obj = {
'composed' + objKey(): True
}
print(obj['composedfoo']) # True
或者在您的实际案例中:
MyClass.render(storyboard={ getAuthor(): self.authorStoryData() })
正如Jon在评论中强调的那样,JavaScript对象文字和Python字典文字之间的最大区别在于,Python的键行为基本上是JavaScript默认情况下[]
的行为。
因此,要在JavaScript中翻译{ [expr]: value }
,您需要在Python中编写{ expr: value }
。但是当你在JavaScript中编写{ key: value }
时,你必须理解它本质上是{ ['key']: value }
,这使它等同于Python中的{ 'key': value }
。
你需要一个字符串文字用于字符串键的原因很简单,因为Python字典几乎可以有任意键对象,并且不限于JavaScript对象的字符串键。