繁体   English   中英

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

[英]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 上)的引用在这里特别合适。

就像你得到你在门廊上找到的那只猫的名字一样:猫(物体)本身不能告诉你它的名字,它并不真正关心——所以找出它叫什么的唯一方法是问你所有的邻居(命名空间),如果是他们的猫(对象)......

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

只是为了好玩,我尝试使用sysgc模块实现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']

所以,总结一下:

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

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM