除了循环之外,还有其他方法可以从任何序列数据(Python)更新字典吗?

除了循环之外,还有其他方法可以从任何序列数据(Python)更新字典吗?,python,for-loop,dictionary,optimization,Python,For Loop,Dictionary,Optimization,我有一个更新字典的代码,如下所示: c = { } for i in ID : d = {i : V[i]} c.update(d) ID和V都是序列数据,包含复杂而庞大的项,其中ID是列表,V是字典 python中有没有什么方法可以不使用“for”之类的循环过程来实现这种逻辑 循环过程的使用会对运行时产生大量影响。不,您不能避免循环,但可以尝试以下替代方法: c = { } for i in ID : c[i] = V[i] 或 或 代码的简短方式是: c.upda

我有一个更新字典的代码,如下所示:

c = { }
for i in ID :
    d = {i : V[i]}
    c.update(d)
ID和V都是序列数据,包含复杂而庞大的项,其中ID是列表,V是字典

python中有没有什么方法可以不使用“for”之类的循环过程来实现这种逻辑


循环过程的使用会对运行时产生大量影响。

不,您不能避免循环,但可以尝试以下替代方法:

c = { }
for i in ID :
    c[i] = V[i]


代码的简短方式是:

c.update({i:V[i] for i in ID})
您也可以使用
映射
,但它将在

c.update(dict(map(lambda i:(i,V[i]),ID)))

这都是O(n),您可以使用上面的符号将其移动到
C
部分而不是Python

只需在循环中使用
c[i]=V[i]
。我不明白:听起来你在问,“有没有办法更新序列中的每个项目而不访问序列中的每个项目?”答案显然是否定的。我遗漏了什么?没有某种循环就没有办法做到这一点,但是您的代码似乎与
c={i:V[i]fori-in-ID}
“循环过程的使用需要大量迭代,对运行时有影响。”虽然我希望至少有一个循环对OP的示例代码有影响,但我认为这并不能回答问题。所有这些基本上都是O(n),我认为OP想要避免(不可能)。@Two-bitalchest,没错,但是使用字典理解可能比一次创建一个条目更快。是的,当然提供的示例可以优化。你也可以
c=dict((I,V[I]),对于ID中的I)
,你不需要先建立列表谢谢你的回答,它比5秒快
c.update({i:V[i] for i in ID})
c.update(dict(map(lambda i:(i,V[i]),ID)))