首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在字典理解中使用locals()

在字典理解中使用locals()
EN

Stack Overflow用户
提问于 2010-11-01 08:46:05
回答 2查看 1K关注 0票数 8

下面的代码不起作用,我假设是因为code中的locals()变量将引用计算code的嵌套代码块:

代码语言:javascript
复制
def f():
    a = 1
    b = 2
    list_ = ['a', 'b']
    dict_ = {x : locals()[x] for x in list_}

我可以改用globals(),它似乎可以工作,但这可能会带来一些额外的问题(例如,如果周围的作用域中有一个变量恰好具有相同的名称)。

有没有什么东西可以让字典在function f的作用域中使用变量呢?

注意:我之所以这样做,是因为我有许多变量想稍后放到字典中,但又不想因为在此期间编写dict_['a']而不是a而使代码变得复杂。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-01 08:53:09

你也许可以这样做:

代码语言:javascript
复制
def f(): 
    a = 1 
    b = 2 
    list_ = ['a', 'b'] 
    locals_ = locals()
    dict_ = dict((x, locals_[x]) for x in list_)

然而,我强烈反对使用locals()来达到这个目的。

票数 8
EN

Stack Overflow用户

发布于 2010-11-01 08:54:11

我相信您是对的:字典理解中的locals()将引用理解的名称空间。

一个可能的解决方案(如果你还没有想到的话):

代码语言:javascript
复制
f_locals = locals()
dict_ = {x : f_locals[x] for x in list_}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4065976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档