[英]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 上)的引用在這里特別合適。
就像你得到你在門廊上找到的那只貓的名字一樣:貓(物體)本身不能告訴你它的名字,它並不真正關心——所以找出它叫什么的唯一方法是問你所有的鄰居(命名空間),如果是他們的貓(對象)......
....如果您發現它有很多名字,或者根本沒有名字,請不要感到驚訝!
只是為了好玩,我嘗試使用sys
和gc
模塊實現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']
所以,總結一下:
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]
好吧,使用 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.