首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python2中变量名的占位符

python2中变量名的占位符
EN

Stack Overflow用户
提问于 2018-01-11 15:56:32
回答 2查看 54关注 0票数 1

在python2中,如果我想打印如下内容:

代码语言:javascript
复制
print 'enrollment:' + str(len(enrollment))
print 'submissions:' + str(len(submissions))

我需要输出标题和长度;尝试格式化:

代码语言:javascript
复制
print ('%d:' + str(len('%d'))) %enrollment

这给了我:

"TypeError:%d格式:需要一个数字,而不是dict“

顺便说一下,“注册”和“提交”都是存储字典的变量。

是否有一种为字符串和变量名称应用占位符的方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-11 16:07:21

我想你也许是在寻找如下的东西:

代码语言:javascript
复制
>>> enrollment = {'a':1,'b':2}
>>> submissions = {'a':1,'b':2,'c':3}
>>> for x in ['enrollment','submissions']:
...     print('%s: '+str(len(eval(x)))) % x
...
enrollment: 2
submissions: 3

请注意,在这里,给定迭代x的字典实际上是作为字符串的字典的名称,它是eval编辑的,以获得用于计数的字典。

还应该注意的是,通常不赞成使用eval --如果传入该函数的字符串是有效的python代码,它将被执行--因此,如果传入的字符串来自例如用户输入,用户可能会运行您不希望被运行的代码。在这种情况下,字符串是在您自己的代码中硬编码的,但是应该是可以的。

票数 0
EN

Stack Overflow用户

发布于 2018-01-11 16:26:05

通常,如果需要名称与对象永久关联,则应该使用字典,而不是尝试从对象返回到变量名称。它需要一些设计思想,但如果您确实需要这种关联,则值得这样做,例如:

代码语言:javascript
复制
coll = {'enrollment' : {'k1':'v1','k2':'v2', 'k3':None},
        'submissions': {...}}

for key, val in coll.items():
    print '%s: %d' % (key, len(val))

这避免了eval,它通常被皱眉:Why is using 'eval' a bad practice?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48211105

复制
相关文章

相似问题

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