我发现了几个主题,其中讨论了在循环中动态创建单个变量是不好的做法,最好使用字典。就我而言,我不需要动态创建它们,我想在循环中访问它们。我不想为它们使用字典,因为这些变量在代码中的很多地方都使用,并且仅在一个地方需要这种动态访问。想法示例:car_pos = 1; man_pos = 10car_vel = 100; man_vel = 5for elm in ['car', 'man']: elm_pos = elm + '_pos' elm_vel = elm + '_vel' # I want values of elements with such names here print(elm_pos, elm_vel)# Desired output:# (1, 100)# (10, 5)
3 回答

慕标5832272
TA贡献1966条经验 获得超4个赞
只需使用globals()字典,将key作为变量名即可。这些键的值将是这些变量的实际值。
car_pos = 1; man_pos = 10
car_vel = 100; man_vel = 5
for elm in ['car', 'man']:
elm_pos = elm + '_pos'
elm_vel = elm + '_vel'
print(globals()[elm_pos], globals()[elm_vel])

慕妹3146593
TA贡献1820条经验 获得超9个赞
同意kindall所说的一切。但是,您可以尝试使用命名元组来执行非字典路由...
from collections import namedtuple
data = namedtuple('data',('pos','vel'))
car = data(1,100)
man = data(10,5)
for elm in (car,man):
print(elm.pos,elm.vel)
添加回答
举报
0/150
提交
取消