如何在python中将变量转换为字符串

时间:2012-02-02 23:07:28

标签: python string variables

我有类似的问题,但我不知道这个词是什么

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

它会打印出来,

cat5
dog3
fish7

所以我想知道是否有一个实际的方法或函数可以用来检索正在使用的变量并将其转换为字符串。希望这可以在不为每只动物实际创建字符串的情况下完成。

编辑:

有没有办法在没有字典的情况下做到这一点?

7 个答案:

答案 0 :(得分:11)

您基本上问“我的代码如何发现对象的名称?”

def animal_name(animal):
    # here be dragons
    return some_string

cat = 5
print(animal_name(cat))  # prints "cat"

来自Fredrik Lundh的quote(在comp.lang.python上)特别在这里是合适的。

  

就像你在门廊上找到那只猫的名字一样:   cat(对象)本身不能告诉你它的名字,它没有   非常关心 - 因此找出所谓的问题的唯一方法就是提问   所有邻居(名称空间)如果是他们的猫(对象)......

     

......如果你发现它被许多名字所知,也不要感到惊讶,   或根本没有名字!

为了好玩,我尝试使用animal_namesys模块实现gc,并发现邻居也在调用您亲切地称为“猫”的对象,即文字整数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']

所以,总结一下:

  • 简短的回答是:你做不到。
  • 答案很长:嗯,实际上,你有点可以..至少在cpython实现中。 To see how I implemented animal_name in my example, look here
  • 正确答案是:使用dict,正如其他人在此处提到的那样。当您确实需要知道名称< - >时,这是最佳选择。对象关联。

答案 1 :(得分:5)

使用字典而不是一堆变量。

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]

答案 2 :(得分:2)

好吧,使用 f 字符串:

cat = 5

print(f"{cat=}")

结果:

cat=5

答案 3 :(得分:0)

我会改用使用字典变量,让你轻松地将字符串名称映射到值。

animalDict['cat'] = 5
animalDict['dog'] = 3

然后,您可以通过键进行交互并打印出您想要的内容。

答案 4 :(得分:0)

myAnimals = {'cat':5,'dog':3,'fish':7}
animals = ['cat','dog','fish']
for animal in animals:
    if myAnimals.has_key(animal): print animal+myAnimals(animal)

答案 5 :(得分:0)

不是将变量放入列表,而是将它们放入字典中。

d={}
d['cat']=5
d['dog']=3
d['fish']=7

for item in d.keys():
  print item+' '+d[item]

答案 6 :(得分:0)

您将变量名称与动物名称的字符串混淆:

在这里:

cat = 7 

cat是变量,7是其值

在:

cat = 'cat'

cat仍然是变量,'cat'是带有动物名称的字符串。你甚至可以在cat cat = 'dog'中添加你喜欢的任何字符串。

现在回到你的问题:你想打印一个动物的名字和一个相应的号码。

要配对姓名和号码,最好的选择是使用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)

我颠倒了价值,关键订单直接打印在数字前打印名称。