这感觉是多余的:
name = 'Isaiah'
myInfo = {
'name': name
}
有没有更短的、惯用的方法来做到这一点,比如在 JavaScript 中:
myInfo = { name }
编辑:将变量名称从 dict
更改为 myInfo
,因为 dict
是关键字。
原文由 Isaiah Taylor 发布,翻译遵循 CC BY-SA 4.0 许可协议
这感觉是多余的:
name = 'Isaiah'
myInfo = {
'name': name
}
有没有更短的、惯用的方法来做到这一点,比如在 JavaScript 中:
myInfo = { name }
编辑:将变量名称从 dict
更改为 myInfo
,因为 dict
是关键字。
原文由 Isaiah Taylor 发布,翻译遵循 CC BY-SA 4.0 许可协议
我今天来到这里是因为我有同样的问题。我必须说,我对答案感到非常沮丧!我同意你的看法,这种冗余应该有一个惯用的解决方案。这是一个罕见的情况,Javascript 似乎比 Python 更明智。所以我想补充两个建议。
首先,只是说 Abarnert 是正确的,如果它只有一个或两个变量,你应该明确。我会说即使不止于此,显式构造通常会更好。但我确实认为在某些情况下可以使用捷径。例如,我有一个构建字典以通过 Python 请求发送数据的文件。这就是它所做的一切。在 每种 情况下,我最终都会制作一个字典,其中的键与我定义的变量相同。我认为这将是可以接受使用快捷方式的文件示例。
首先,您可以使用 eval
内置函数。通常避免使用此命令,但在这种情况下它可以提供帮助,因为它可以接收作为变量名称的字符串,并吐出变量值:
def main():
#variables
foo = "hello world"
bar = 10
baz = [1, 2, 3]
# Build the dictionary:
args = ("foo", "bar", "baz")
dictionary = dict()
for arg in args:
dictionary[arg] = eval(arg)
print(dictionary)
if __name__ == "__main__":
main()
试试看。请注意,由于范围可变,很难将此功能包装到某种类或函数中。即使使用字典理解也会失败。但是如果你很高兴在这样的函数中添加 3 行,它就会起作用。
其次,考虑是否可以在构建字典时将值分配给变量。所以不是:
foo = 4+5
dictionary = dict(foo=foo)
尝试:
dictionary = dict(
foo=4+5
)
如果需要在后面的计算中使用前面的值,先初始化字典,然后再结合计算和字典赋值:
dictionary = dict()
dictionary['foo'] = 4 + 5
dictionary['bar'] = dictionary['foo'] + 9
我认为可能对上述情况也有帮助的是新的 PEP,它允许您在计算中分配别名。 BDFL 辞职的那个。因此,让我们希望尽快实施!
最后,只是对接受的答案的快速评论,事实上 Python 已经使用 {} 来表示集合,但这并不意味着我们不能创建此功能(为什么不是 <> 或 D() 或其他东西?)。只是我的 2 美分。我认为这是一个需要的功能。
原文由 Neil 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答862 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
不,没有。同样,这种语法不太可能出现,因为结构
已为
set
文字 保留。另一种选择是使用
dict
构造函数:PS 因为
dict
是在builtins
模块中定义的名称,请不要将变量命名为dict