可能是重复的,但至少通过搜索这些术语我找不到答案。
在Python中有更快的方法吗?
level1 = {}
level2 = {}
level3 = {}
我试过
level1 = level2 = level3 = {}
但这似乎创建了对象的副本,这不是我想要的。和
level1, level2, level3 = {}
抛出错误。
答案 0 :(得分:16)
level1 = level2 = level3 = {}
不创建副本。它允许引用级别{1-3}到相同的对象。您可以改为使用列表理解:
level1, level2, level3 = [{} for dummy in range(3)]
或更具可读性:
level1, level2, level3 = {}, {}, {}
答案 1 :(得分:14)
您的变量命名可能是您的设计可以改进的标志。使用列表而不是三个单独的变量可能更好:
levels = [{}, {}, {}]
答案 2 :(得分:11)
你可以做到
level1, level2, level3 = {}, {}, {}
答案 3 :(得分:3)
level1, level2, level3, = {}, {}, {}
答案 4 :(得分:1)
我个人从不更改代码以在一行中挤出更多内容。我有三种不同的任务,每行一次。
但是,如果通过进行此类更改来记录性能改进,则这是另一回事。我只是不知道这些变化有任何性能改进。只是混淆。
答案 5 :(得分:0)
Python被解释为允许在运行时创建事物的定义。
def prefixed_range(prefix, start, stop=None, step=1):
" Like xrange() but results are prefixed numeric strings. """
prefix = str(prefix)
if stop is None:
start, stop = 0, start
for i in xrange(start, stop, step):
yield prefix + str(i)
def define_vars(names, value=None, namespace=None):
namespace = globals() if not namespace else namespace
factory = (lambda: value) if not callable(value) else value
for name in names:
namespace[name] = factory()
define_vars(prefixed_range('level', 1, 4), dict)
print 'level1: {}, level2: {}, level3: {}'.format(level1, level2, level3)
# level1: {}, level2: {}, level3: {}
答案 6 :(得分:0)
人们已经回答了你问题的意图,但是......
在Python中有更快的方法吗?
你的意思是什么?
我认为你真正的问题应该是“这样做的pythonic方式是什么?”
level1,level2,level3 = {}
元组由逗号运算符构造(不在方括号内),带或不带括号,但空元组必须有括号括起来,例如a,b,c或() 。单个项元组必须有一个尾随逗号,例如(d,)。
a,b,c隐含地(a,b,c)。这就是为什么你需要在右侧有一个3元组,正如其他海报(nils,sdolan,gunner)所建议的那样。
明确地显示他们暗示:
(level1, level2, level3) = ({}, {}, {},)
答案 7 :(得分:-1)
试试这个: 1级,级别2,级别3 = [{}] * 3