我有一个类似的问题,但我不知道这个词是什么
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
所以我想知道是否有一个实际的方法或函数可以用来检索用作字符串的变量名称。
您基本上是在问“我的代码如何发现对象的名称?”
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']
所以,总结一下:
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]
cat = 5
print(f"{cat=}")
结果:
cat=5
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]
animalDict['cat'] = 5
animalDict['dog'] = 3
然后你可以通过按键进行交互并打印出你想要的内容。
在这里:
cat = 7
cat 是变量,7 是它的值
在:
cat = 'cat'
cat 仍然是变量,'cat' 是带有动物名称的字符串。你可以把任何你喜欢的字符串放在猫里面,甚至
cat = 'dog'
。现在回到你的问题:你想打印出动物的名字和相应的数字。
要将姓名和号码配对,最好的选择是使用字典 。
{
和
}
代表一个字典(只是为了在某些情况下也完成
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)
我颠倒了数值,在打印时按键命令在数字之前打印姓名。
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]