![](/img/trans.png)
[英]How do I turn a Python string stored in a variable into a byte sequence?
[英]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.