簡體   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