繁体   English   中英

如何将字符串转换为变量名称

[英]How do I turn a string into a variable name

如何转换字符串,将'a'说成可以使用追加函数的变量名?

我正在尝试接受输入,该输入仅由字母表中的小写字母组成,并在字符串中用字母名称的变量下的数字记录字母的位置。 我遇到的问题是我必须将输入的字符串转换为变量名称,我可以使用附加功能。 在我看到它之后我尝试过使用vars()(因为我刚接触到这个,所以不知道vars()是什么)。 这有时很好,但并非总是如此。 现在我正在寻找更好的方法来做到这一点。

'''This is the code i have now. This does not work all the time'''
ord = input()
count = 1
for i in ord:
    i = vars()[i]
    i.append(count)
    count = count + 1
    i = []

这是一个适当的解决方案,对应于您尝试使用词典进行的操作(我认为是字母索引):

result = {}
ord = input()  # why do you call that variable ord?
count = 1
for i in ord:
    if i not in result:
        result[i] = []
    result[i].append(count)
    count += 1
print(result)

没有瓦尔,没有本地人,没有与不安全上下文搞乱 当有人在你的输入中输入i和类似的其他问题时没问题。 一切安全而简单。 使用defaultdict可以进一步简化它。

作为旁注:忘记vars / locals / globals和类似对象的存在。 即使我已经用Python编程了十年,我也从未使用过它们。 当你编写像Python调试器这样的疯狂代码时,这些很有趣。 否则不需要。 除非你是武士,否则这些剑会削减你。

你只需要一个将索引添加到列表中的字典,defaultdict对此非常有用

from collections import defaultdict
text = input()
result = defaultdict(list)
for idx, letter in enumerate(text):
     result[letter].append(idx)

print(result)

字符串asdc输出将是{'a': [0], 'c': [3], 's': [1], 'd': [2]}

vars()函数返回当前上下文中定义的所有变量的字典。 您可以使用它来设置值或将新值附加到列表。 请查看下面的脚本以获取示例:

data=[]
print("Field Name:")
field=input()
print("Value:")
ord1 = input()
print("VALUE: {}".format(field))
i = vars().get(field,None)
if i is not None:
    i.append(ord1)
print(data)

您可以使用向此地图添加值

vars()['key']='Value'

结果:

{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__doc__': None, 'key': 'Value', '__package__': None}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM