how to convert variable into string in python
我也有类似的问题,但是我不知道这个词是什么。
1 2 3 4 5 6 | cat=5 dog=3 fish=7 animals=[cat,dog,fish] for animal in animals: print animal_name+str(animal) #by animal name, i mean the variable thats being used |
它会打印出来,
1 2 3 | cat5 dog3 fish7 |
所以我想知道是否有一个实际的方法或函数可以用来检索正在使用的变量并将其转换为字符串。希望这可以在不为每只动物创建字符串的情况下完成。
编辑:
没有字典有没有办法做到这一点?
您基本上是在问"我的代码如何发现对象的名称?"
1 2 3 4 5 6 | def animal_name(animal): # here be dragons return some_string cat = 5 print(animal_name(cat)) # prints"cat" |
Fredrik Lundh(在comp.lang.python上)的一句话在这里特别合适。
The same way as you get the name of that cat you found on your porch:
the cat (object) itself cannot tell you its name, and it doesn’t
really care — so the only way to find out what it’s called is to ask
all your neighbours (namespaces) if it’s their cat (object)…….and don’t be surprised if you’ll find that it’s known by many names,
or no name at all!
为了好玩,我尝试使用
1 2 3 4 5 6 7 | >>> 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'] |
对于足够唯一的对象,有时可以获得唯一的名称:
1 2 | >>> mantis_shrimp = 696969; animal_name(mantis_shrimp) ['mantis_shrimp'] |
因此,总结如下:
- 简短的回答是:你不能。
- 答案很长:实际上,你可以……至少在cpython实现中。要了解如何在我的示例中实现
animal_name ,请看这里。 - 正确的答案是:使用
dict ,正如其他人在这里提到的。当您实际需要知道名称<->对象关联时,这是最佳选择。
使用字典而不是一堆变量。
1 2 3 4 | animals = dict(cat=5, dog=3, fish=7) for animal, count in animals.iteritems(): print animal, count |
请注意,它们可能不会(可能不会)按照您输入的顺序输出。您可以使用
1 2 | for animal in sorted(animals.keys()): print animal, animals[animal] |
您将变量名与动物名的字符串混淆:
在这里:
1 | cat = 7 |
cat是变量,7它的值
在:
1 | cat = 'cat' |
cat仍然是变量,"cat"是带有动物名称的字符串。你可以把任何你喜欢的绳子放在猫里面,甚至是
现在回到你的问题上来:你要打印出一个动物的名字和一个对应的号码。
要对名称和数字进行配对,最好的选择是使用
1 | d = {3: 'cat', 5: 'dog', 7: 'fish'} |
1 2 3 | d = {3: 'cat', 5: 'dog', 7: 'fish'} for key,value in d.items(): print(value, key) |
我把值倒过来,按顺序打印,把名字印在号码前。
我不把变量放在列表里,而是把它们放进字典里。
1 2 3 4 5 6 7 | d={} d['cat']=5 d['dog']=3 d['fish']=7 for item in d.keys(): print item+' '+d[item] |
1 2 3 4 | myAnimals = {'cat':5,'dog':3,'fish':7} animals = ['cat','dog','fish'] for animal in animals: if myAnimals.has_key(animal): print animal+myAnimals(animal) |
我将改为使用字典变量,它可以让您轻松地将字符串名称映射为值。
1 2 | animalDict['cat'] = 5 animalDict['dog'] = 3 |
然后你可以通过按键进行交互并打印出你想要的。