[英]How to convert variable into string in python
我有一个类似的问题,但我不知道这个词是什么
cat = 5
dog = 3
fish = 7
animals= [cat, dog, fish]
for animal in animals:
# by animal name, I mean the variable name that's being used
print(animal_name + str(animal))
它应该打印出来
cat5
dog3
fish7
所以我想知道是否有实际的方法或 function 我可以用来检索用作字符串的变量名。
您基本上是在问“我的代码如何发现对象的名称?”
def animal_name(animal):
# here be dragons
return some_string
cat = 5
print(animal_name(cat)) # prints "cat"
Fredrik Lundh(在 comp.lang.python 上)的引用在这里特别合适。
就像你得到你在门廊上找到的那只猫的名字一样:猫(物体)本身不能告诉你它的名字,它并不真正关心——所以找出它叫什么的唯一方法是问你所有的邻居(命名空间),如果是他们的猫(对象)......
....如果您发现它有很多名字,或者根本没有名字,请不要感到惊讶!
只是为了好玩,我尝试使用sys
和gc
模块实现animal_name
,发现邻居还通过几个名称调用您亲切地称为“cat”的对象,即文字整数5:
>>> cat, dog, fish = 5, 3, 7
>>> animal_name(cat)
['n_sequence_fields', 'ST_GID', 'cat', 'SIGTRAP', 'n_fields', 'EIO']
>>> animal_name(dog)
['SIGQUIT', 'ST_NLINK', 'n_unnamed_fields', 'dog', '_abc_negative_cache_version', 'ESRCH']
>>> animal_name(fish)
['E2BIG', '__plen', 'fish', 'ST_ATIME', '__egginsert', '_abc_negative_cache_version', 'SIGBUS', 'S_IRWXO']
对于足够的唯一对象,有时你可以得到一个唯一的名称:
>>> mantis_shrimp = 696969; animal_name(mantis_shrimp)
['mantis_shrimp']
所以,总结一下:
animal_name
,请查看此处。dict
,正如其他人所提到的。 当您确实需要使用名称 <--> 对象关联时,这是最佳选择。使用字典而不是一堆变量。
animals = dict(cat=5, dog=3, fish=7)
for animal, count in animals.iteritems():
print animal, count
请注意,它们可能不会(可能不会)以您放入它们的相同顺序出现。您可以使用collections.ordereddict
解决此问题,或者如果您只需要以一致的顺序需要它们,则只需对键进行排序:
for animal in sorted(animals.keys()):
print animal, animals[animal]
好吧,使用 f 字符串:
cat = 5
print(f"{cat=}")
结果:
cat=5
fadop3 答案的另一种形式
cat = 5
cat = '%s' % cat
这会将cat
变量转换为字符串。
这个问题太老了,但为了真实,我们可以使用
[name for name, obj in globals().items() if eval(name) in animals]
['cat', 'dog', 'fish']
cat = 5
dog = 3
fish = 7
animals= [cat, dog, fish]
我会改为使用字典变量,让您可以轻松地将字符串名称映射到值。
animalDict['cat'] = 5
animalDict['dog'] = 3
然后您可以通过键进行交互并打印出您想要的内容。
myAnimals = {'cat':5,'dog':3,'fish':7}
animals = ['cat','dog','fish']
for animal in animals:
if myAnimals.has_key(animal): print animal+myAnimals(animal)
我不会将变量放入列表中,而是将它们放入字典中。
d={}
d['cat']=5
d['dog']=3
d['fish']=7
for item in d.keys():
print item+' '+d[item]
您将变量名称与动物名称的字符串混淆了:
在这里:
cat = 7
cat 是变量,7 是它的值
在:
cat = 'cat'
cat 仍然是变量,'cat' 是带有动物名称的字符串。 你可以把你喜欢的任何字符串放在 cat 甚至cat = 'dog'
。
现在回到你的问题:你想打印出动物的名字和对应的数字。
配对 name 和 number 的最佳选择是使用dict
,一个字典。 {
和}
代表一个字典(在某些情况下也是一个set
) :
d = {3: 'cat', 5: 'dog', 7: 'fish'}
d
是你的变量。 {3: 'cat', 5: 'dog', 7: 'fish'}
是你的字典。 3, 5, 7
是这样的字典的键, 'cat', 'dog', 'fish'
是对应的值。
现在你需要迭代这个字典。 这可以通过调用d.items()
来完成:
d = {3: 'cat', 5: 'dog', 7: 'fish'}
for key,value in d.items():
print(value, key)
我反转了值,键顺序打印以在数字之前打印名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.