2017-09-05 60 views
1

我想獲得一個變量來從列表中獲取一個字符串(這是一個變量名),然後我想調用該變量。如何將兩個變量的內容變成python中的一個可調用變量名?

有一個列表,其中存儲了很多變量名和其他一些變量。

fruits = ["apple","orange","banana","blueberry"] 

    apple = ["A red fruit","sort of ball"] 
    orange = ["An orange fruit","a ball"] 
    banana = ["A yellow fruit","a fruit"] 
    blueberry = ["A blue fruit","a berry"] 
    number = 3 

我想從列表中的水果,我有「數」爲:

print(fruits[number]) 

將輸出:banana

輸出是預名稱現有的列表變量,那麼如何從該列表中調用項目?

我試着這樣做:

print((fruits[number])[2]) 

而且我認爲他會出來這樣的:

print(banana[2]) 

輸出:a fruit

預先感謝您的幫助。

+4

上Python字典閱讀起來。 – NPE

+1

你真的需要'水果'的元素是字符串嗎?你知道你可以簡單地存儲引用的實際變量? '水果= [蘋果,橙子,香蕉,藍莓];打印(水果[數])'。 – nbro

+1

@Jamie顯然有不同的可能性來解決你的問題。最好的取決於你想要獲得什麼。也許,正如人們所暗示的那樣,你只是想使用_dictionary_和映射名稱(或鍵)來表示值(即,對於你的情況,描述鍵的句子)。 – nbro

回答

1

使用變量像你要的是不是一個好主意。 在這種情況下,處理你想要做的最好的方法是使用「字典」。這是一個原生的「key:value」python數據結構。

可以定義水果及其說明是這樣的:如果你要打印一些水果的描述,你應該使用它的關鍵

fruits = {'banana': ['A yellow fruit', 'a fruit'], 
      'orange': ['An orange fruit', 'a ball'], 
      ... 
      ...} 

然後:

fruit_to_print = 'banana' 
print fruits[fruit_to_print] 

當運行這個意願輸出:

[ 'A黃果', '水果']

如果你想要得到的,例如,描述的第一個項目:

print fruits[fruit_to_print][0] 

這將輸出:

黃色水果

字典不打算成爲一個有序的結構,所以你不應該使用索引來調用它的值,但如果你真的確定你在做什麼y OU可以這樣做:

fruits = {'banana': ['A yellow fruit', 'a fruit'], 
     'orange': ['An orange fruit', 'a ball']} 
number = 1 
desc_index = 0 
# fruits.keys() returns an array of the key names. 
description = fruits[fruits.keys()[number]][desc_index] 

print description 

>>> A yellow fruit 

記住,添加或移除元素有可能改變所有其他元素的索引。

另一種方法是創建一個類水果和水果具有(一個或多個)的數組:

class Fruit: 
    def __init__(self, name, description): 
     self.name = name 
     self.description = description 

fruit1 = Fruit('banana', ['A yellow fruit', 'a fruit']) 
fruit2 = Fruit('orange', ['An orange fruit', 'a ball']) 

fruits = [] 
fruits.append(fruit1) 
fruits.append(fruit2) 

fruit = 1 
description = 0 

print fruits[fruit].description[description] 

橙色水果

+0

非常感謝,這幫了我很多! – Jamie

3

這是不可能的。你可以得到最接近的是使用字典,這些字典基本上是從鍵到值的映射。在你的情況,一本字典是這樣的:

fruits = { 
    "apple": ["A red fruit","sort of ball"], 
    "orange" : ["An orange fruit","a ball"], 
    "banana": ["A yellow fruit","a fruit"], 
    "blueberry": ["A blue fruit","a berry"] 
} 

現在你可以做這樣的事情print(fruits['banana'][1])將打印a fruit因爲fruits是一本字典,'banana'在這個字典中的鍵,fruits[banana]等於["A yellow fruit","a fruit"]。當您訪問fruits['banana']的索引1上的元素時,它將返回該列表的元素,因爲列表在Python中是0索引的,並且這是一個字符串a fruit

+0

感謝您的幫助! – Jamie

+0

沒問題,夥計! – campovski

3

你想要什麼叫做associative array,在python中這些叫做dictionaries

fruitsDict = {} 

fruitsDict["apple"] = ["A red fruit","sort of ball"] 
fruitsDict["orange"] = ["An orange fruit","a ball"] 
fruitsDict["banana"] = ["A yellow fruit","a fruit"] 
fruitsDict["blueberry"] = ["A blue fruit","a berry"] 

如果你想獲得的字典作爲字符串的鍵就可以使用

for key, value in fruitsDict.items(): 
     print(key,value[1]) 

輸出:

蘋果那種球
橙色球
香蕉水果
藍莓漿果

點擊here在教程的工作示例點

+0

謝謝,這非常有幫助! – Jamie

相關問題