2011-04-03 52 views
0

我有一個名爲如何從python中的字典中獲取給定名稱的密鑰

anime_dict
的變量,其中包含一個對象列表字典,如下所示。
{'JI2212': ('Inu Yasha', [('year', 1992), ('rating', 3)]), 'EH389J': (Naruto', [('year', 1994), ('rating', 4), ('readers', 3424322)]), 'PPP67': ('Fruits Basket', [('Year', 1999), ('rating', 5), ('readers', 434232), ('chap', 40)])}

所以這個詞典的關鍵是第一部分('InI Yasha'的'JI2212'),第二部分是名稱,最後一部分包含部分列表。
我想創建2個函數,它們將首先從給定名稱中獲得密鑰,然後從給定名稱中獲取部分。
功能會...

get_key(name) 
and get_parts(name)


例如

>>>get_key('Fruits Basket')
'PPP67'
and
>>>get_parts('Inu Yasha')
[('year', 1992), ('rating', 3)]
+0

可能的重複[一個函數返回一個值/ Python的給定字典中的值列表](http://stackoverflow.com/questions/5527675/a-function-to-return-a-value-list -of-values-from-a-given-dictionary-in-python) – Johnsyweb 2011-04-03 05:06:46

回答

1

這是可能技術上,但我不建議你這樣做,是因爲它不會要高效,地圖的目的是使用一把鑰匙來獲得價值。在你的情況,我認爲它能夠更好地restuct您的數據:

{'JI2212': ('Inu Yasha', [('year', 1992), ('rating', 3)])} 

{'Inu Yasha': ('JI2212', [('year', 1992), ('rating', 3)])} 

話,就非常容易實現自己的目標。

0

keysvalues方法。使用這些,不要逐條輸入,它會很慢,因爲按值搜索鍵是線性的。

+0

我的朋友告訴我,通過交換密鑰和值,它會更容易。但我不知道如何交換這兩個.. – Janezcka 2011-04-03 05:05:19

0

你應該真的把你的鑰匙當作動漫名字,這會讓生活變得更容易。

例如,現在你的字典被插入這樣的:

anime_dict[id] = (name,...) 

一個更好的辦法是做:

anime_dict[name] = (id,...) 

除非你有特殊原因有鑰匙的是ID號,這方式通常更容易理解和使用。

0

如果你只是想你原來的字典轉換成一個新的,你可以運行以下命令:

old_dict = {'JI2212': ('Inu Yasha', [('year', 1992), ('rating', 3)]), 'EH389J': ('Naruto', [('year', 1994), ('rating', 4), ('readers', 3424322)]), 'PPP67': ('Fruits Basket', [('Year', 1999), ('rating', 5), ('readers', 434232), ('chap', 40)])} 

new_dict = {} 
for key in old_dict.keys(): 
    name = old_dict[key][0] 
    data = old_dict[key][1:] 
    new_dict[name]=(key, data) 

希望它能幫助!

相關問題