![](/img/trans.png)
[英]Python how to delete a specific value from a dictionary key with multiple values?
[英]How to Create a Python Program that Outputs a Specific Key Value from a Python Dictionary that has Multiple Keys?
我有一個 Python 字典,其中包含多個具有特定值的鍵:
animal_dict =
{'Animal':
{0: 'Giraffe',
1: 'Kangaroo',
2: 'Koala',
3: 'Lion',
4: 'Walrus'},
'ID Number':
{0: '121',
1: '234',
2: '673',
3: '543',
4: '134'},
'Zoo Location':
{0: 'Chicago',
1: 'New York',
2: 'Seattle',
3: 'Tulsa',
4: 'Santa Monica'},
}
我需要弄清楚如何創建一個程序,該程序將輸入其中一種動物的名稱(鍵),然后輸出特定於該動物(鍵)的 ID 號(值)。 如何執行該程序,並專門輸出 ID 號而不是動物園位置?
我要做的是,如果用戶輸入動物名稱,程序會檢查它是否在字典中,如果是,它應該顯示與該特定動物相關的信息。
這是我到目前為止所擁有的(不正確):
enter_animal_name = input("Enter Animal Name: ")
if enter_animal_name in animal_dict.values():
print("Animal ID Number: " + animal_dict[enter_animal_name])
else:
print("Animal does not exist in database")
我哪里錯了? 謝謝你。
您可以使用以下代碼片段來實現此目的
enter_animal_name = input("Enter Animal Name: ")
for key, value in animal_dict['Animal'].items():
if value == enter_animal_name:
print("Animal ID Number: ", animal_dict['ID Number'][key])
break
else:
print("Animal does not exist in database")
當用戶輸入動物名稱時,它會在Animal
子字典中查找。 它逐個比較每個值,直到找到對應的值,在這種情況下,它將使用鍵打印 ID。 找到 id 后,循環中斷,因為沒有必要在字典中繼續迭代。 如果沒有找到,則執行for
循環的else
語句。
但是,我認為您不應該將數據存儲在嵌套字典中。 這是一個使用 Animal 數據類列表的重寫命題:
from dataclasses import dataclass
@dataclass
class Animal:
id: int
name: str
zoo_location: str
animals = [
Animal(id=0, name='Giraffe', zoo_location='Chicago'),
Animal(id=1, name='Kangaroo', zoo_location='New York'),
Animal(id=2, name='Koala', zoo_location='Seattle'),
Animal(id=3, name='Lion', zoo_location='Tulsa'),
Animal(id=4, name='Walrus', zoo_location='Santa Monica'),
]
enter_animal_name = input("Enter Animal Name: ")
for animal in animals:
if animal.name == enter_animal_name:
print("Animal ID Number: ", animal.id)
break
else:
print("Animal does not exist in database")
您對數據結構的解釋似乎反映了很多混亂。 讓我們看一個稍微小一點的 dict 版本,我會解釋一下:
animal_dict = {
'Animal': {
0: 'Giraffe',
1: 'Kangaroo',
}
}
animal_dict
中的一個鍵是字符串'Animal'
。 它的值是內部字典{0: 'Giraffe', 1: 'Kangaroo'}
。 動物名稱實際上是該內部字典中的值(數字是鍵)。
字典不容易搜索它們的值。 它們是為快速查找鍵而設計的,但是由於您的數據是向后組織的,因此進行所需的搜索會很不方便。 請注意,並非不可能,只是比基於字典的數據結構的效率要低得多。
更好的方法可能是重組數據,然后在新結構上進行搜索。 例如,這是一個字典理解,它將構建一個直接從動物名稱映射到 ID 號的新字典:
good_mapping = {name: animal_dict['ID Number'][index]
for index, name in animal_dict['Animal'].items()}
您的查找代碼將變為:
name = input("Enter Animal Name: ")
if name in good_mapping:
print("Animal ID Number: " + good_mapping[name])
else:
print("Animal does not exist in database")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.