2011-04-03 65 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) 

希望它能帮助!

相关问题