Как получить ключ от заданного имени в словаре в python - PullRequest
0 голосов
/ 03 апреля 2011

У меня есть переменная с именем

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)])}

, поэтому ключ dict - 1-я часть ('JI2212' для Inu Yasha)2-я часть - это имя, а последняя часть содержит список частей.
Я хочу создать 2 функции, которые 1-й получат ключ от заданного имени, а 2-й получат части от заданного имени.
функции будут ...
get_key(name)
and get_parts(name)


например

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

Ответы [ 4 ]

1 голос
/ 03 апреля 2011

Технически это возможно , но я бы не рекомендовал вам это делать, поскольку не будет эффективным , карта предназначена для использования ключа для получения значения.В вашем случае я думаю, что лучше восстановить ваши данные с:

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

до

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

, тогда очень легко достичь вашей цели.

0 голосов
/ 03 апреля 2011

Если вы просто хотите преобразовать свой оригинальный словарь в новый, вы можете выполнить следующее:

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)

Надеюсь, это поможет!

0 голосов
/ 03 апреля 2011

У вас должен быть ключ от аниме, это делает жизнь намного проще.

Например, теперь ваш словарь вставляется как:

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

Лучше было бы сделать:

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

Если у вас нет конкретной причины иметь идентификатор ключа, этот способ обычно проще для понимания и использования.

0 голосов
/ 03 апреля 2011

Методы keys и values.Используйте их, не делайте это построчно, это будет очень медленно, потому что поиск ключа по значению является линейным.

...