如何将一系列int转换为用于变量的字符串?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将一系列int转换为用于变量的字符串?相关的知识,希望对你有一定的参考价值。
所以我有一些变量在字符串的末尾使用数字。但是当我使用str函数时,“i”似乎没有转换为字符串。知道为什么会这样吗?
码:
has_GroupConnection1 = True
has_GroupConnection2 = True
has_GroupConnection3 = True
GroupConnection1 = 45
GroupConnection2 = 88
GroupConnection3 = 55
for i in range(1,3):
if str(has_GroupConnection[i]) == True:
print(str(GroupConnection[i]))
我看到你正在尝试做什么,但你做不到(大多数情况下,见下文)。你的代码按照以下方式去糖:
has_GroupConnection.__getitem__(i)
# foo[x] -> foo.__getitem__(x)
由于has_GroupConnection
没有在你的程序中定义,这将永远不会工作,而是将抛出NameError
。不过你可以定义它。
has_GroupConnection = []
has_GroupConnection.append(None) # 0th element
has_GroupConnection.append(True) # 1st element
has_GroupConnection.append(True) # 2nd element
has_GroupConnection.append(True) # 3rd element
# or indeed has_GroupConnection = [None, True, True, True]
# or a dict will work, too...
# as above...
GroupConnection = [None, 45, 88, 55]
for i in range(1,3): # note this is only [1, 2], not [1, 2, 3]
if has_GroupConnection[i]:
print(str(GroupConnection[i]))
我的第一句话过于简单化,你可以用eval
或locals()
来做,但这是一个坏主意,所以我不会告诉你如何做到这一点,并强烈告诫你不要这样做!这是丑陋,低效和可怕的代码味道(你应该为自己考虑谷歌搜索而感到羞耻!)
这是使用元组使用列表的另一种方法
group_connection = list()
group_connection.append((True, 45))
group_connection.append((True, 88))
group_connection.append((True, 55))
for i in range(0,len(group_connection)):
if (group_connection[i][0] == True):
print(str(i) + " has the connection number " + str(group_connection[i][1]))
输出
0 has the connection number 45
1 has the connection number 88
2 has the connection number 55
这就是你要找的东西:
has_GroupConnection = [True] * 3
GroupConnection = [45, 88, 55]
for i in range(3):
if has_GroupConnection[i]:
print(GroupConnection[i])
输出是:
45
88
55
has_GroupConnection
和GroupConnection
都是现在的列表,所以你用[]
索引它们。我将循环更改为从0到2运行。原始循环从1运行到2.我还消除了一些不必要的东西。
这将是解决问题的“方式”。
has_connections = [True, True, False]
group_connections = [45, 88, 55]
for h, g in zip(has_connections, group_connections):
if h:
print(g)
我会考虑在这里使用字典来存储这些值(嵌套为'has'和'connection'属性),因为你在循环键中没有问题。
如果需要包含特定数字,请使用字符串替换:
我在范围内(1,3):
而connection-dict ['GroupConnection%s'%str(i)] ['has']:
print(dict ['GroupConnection%s'%str(i)] ['conn-number'])
语法[]
用于指定可迭代中的元素,如列表或字符串,或从dict
中检索值。您正在尝试使用它来识别变量,但这不起作用。您应该使用dict
,而不是:
group_connections = {
1 : None,
2 : 45,
3 : 88,
4 : 55
}
然后你可以遍历dict
的键来获取你所有的GroupConnection
s:
for grp in group_connections:
if group_connections[grp]:
print(group_connections[grp])
或者您可以使用dict.items()
方法:
for grp_number, connection in group_connections.items():
if connection:
print(connection)
由于您的两个数据是相关的,因此将它们保持在一起更有意义,因此它们以某种方式相关。
以上是关于如何将一系列int转换为用于变量的字符串?的主要内容,如果未能解决你的问题,请参考以下文章