[英]How do I remove the quotation marks off of a string to be used as a variable - python
我試圖從列表中選擇一個隨機項目,然后從詞典中選擇一個與列表中名稱相同名稱的隨機項目。
import random
letters = ["a" , "b" , "c"]
a = {
"item1": "Q",
"item2": "W",
}
b = {
"item1": "E",
"item2": "R",
}
c = {
"item1": "T",
"item2": "Y",
}
item_num = random.randint(0, len(letters)-1)
print(letters[item_num].get([random.randint(0, 1)]))
我總是得到相同的錯誤: AttributeError: 'str' object has no attribute 'get'
,所以我認為這是由於item_num
將= 'a'
類'a'
東西而不是沒有引號的a
而引起的。 任何幫助表示贊賞!
出現該錯誤的原因是您正在調用get
on str
。
item_num
是一個int
。 您可以用它訪問一個letters
元素,這很好,因為letters
是一個list
。 然而,一個元素letters
是str
( 'a'
, 'b'
或'c'
),你顯然不能稱之為get
的。
您想要做的就是在字典上調用get
,它對應於您得到的letters[item_num]
的值。 因此,這可能會滿足您的要求:
import random
letters = ["a" , "b" , "c"]
a = {
"item1": "Q",
"item2": "W",
}
b = {
"item1": "E",
"item2": "R",
}
c = {
"item1": "T",
"item2": "Y",
}
source = random.choice(letters)
print(globals()[source].get(f'item{random.randint(1, 2)}'))
也就是說,這可能不是您應該做的(對全局變量的編程訪問)。 相反,您可以考慮:
['a', 'b', 'c']
是鍵 1
, 2
為鍵,而不是'item1'
, 'item2'
) 例:
data = {'a': {1: 'Q',
2: 'W'}
...}
如果使用的是全局范圍,則可以使用globals()
或eval字母:
同樣,為了從字典中選擇一個隨機項目,您需要知道鍵,然后隨機選擇一個:
item_num = random.randint(0, len(letters)-1)
rand_key = random.choice(["item1", "item2"])
print(globals()[letters[item_num]].get(rand_key))
item_num = random.randint(0, len(letters)-1)
rand_key = random.choice(["item1", "item2"])
print(eval(letters[item_num]).get(rand_key))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.