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

问题描述 投票:0回答:9

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

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

所以我想知道是否有一个实际的方法或函数可以用来检索用作字符串的变量名称。

python string variables
9个回答
16
投票

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

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

cat = 5
print(animal_name(cat))  # prints "cat"
Fredrik Lundh(在 comp.lang.python 上)的

引用在这里特别合适。

与获取在门廊上发现的那只猫的名字相同的方法: 猫(物体)本身无法告诉你它的名字,而且它也不会 真的很关心——所以找出它叫什么的唯一方法就是询问 你所有的邻居(命名空间),如果这是他们的猫(对象)......

...如果您发现它有很多名字,请不要感到惊讶, 或者根本没有名字!

只是为了好玩,我尝试使用

animal_name

sys
 模块来实现 
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 实现中。 要了解如何在我的示例中实现 animal_name
    ,请查看此处
  • 正确的答案是:使用dict
    ,正如其他人提到的那样。当您实际需要使用名称 
    对象关联时,这是最佳选择。<-->

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
投票
好吧,使用 f 弦:

cat = 5 print(f"{cat=}")
结果:

cat=5


    


1
投票
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
投票
我不会将变量放入列表中,而是将它们放入字典中。

d={} d['cat']=5 d['dog']=3 d['fish']=7 for item in d.keys(): print item+' '+d[item]
    

0
投票
我会改为使用字典变量,它可以让您轻松地将字符串名称映射到值。

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

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


0
投票
您将变量名称与动物名称字符串混淆了:

在这里:

cat = 7

cat 是变量,7 是它的值

在:

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
 是该字典的 
keys'cat', 'dog', 'fish'
 是对应的值。
现在您需要迭代这本字典。这可以通过调用
d.items()
:
来完成

d = {3: 'cat', 5: 'dog', 7: 'fish'} for key,value in d.items(): print(value, key)

我颠倒了数值,在打印时按键命令在数字之前打印姓名。


0
投票
fadop3 答案的另一种形式

cat = 5 cat = '%s' % cat
这会将 

cat

 变量转换为字符串。


0
投票
这是一个太老的问题了,但为了真实性,我们可以使用

[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]
    
© www.soinside.com 2019 - 2024. All rights reserved.