Получение ключа и значений из словаря - PullRequest
0 голосов
/ 03 января 2012

Я использовал словарь, как показано ниже:

streetno={
    "1":"Sachin Tendulkar",
    "2":"Sehawag",
    "3":"Dravid",
    "4":"Dhoni",
    "5":"Kohli"
}      

После этого я спрашиваю пользователя i / p.Затем, в зависимости от пользовательского ввода, я хочу получить ключ или значение из словаря. Как я могу это реализовать ??Какой метод я могу использовать для реализации этого?

Ответы [ 5 ]

2 голосов
/ 03 января 2012

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

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

streetno={"1":"Sachin Tendulkar","2":"Sehawag","3":"Dravid","4":"Dhoni","5":"Kohli"}
streetno.update([(v, k) for k, v in streetno.items()])

В результате получается следующий словарь:

>>> pprint(streetno)
{'1': 'Sachin Tendulkar',
 '2': 'Sehawag',
 '3': 'Dravid',
 '4': 'Dhoni',
 '5': 'Kohli',
 'Dhoni': '4',
 'Dravid': '3',
 'Kohli': '5',
 'Sachin Tendulkar': '1',
 'Sehawag': '2'}

С этим вы можете получить ввод и посмотреть значение в словаре без какой-либо дополнительной проверки:

key = raw_input("Enter name or number (i/p):")
result = streetno.get(key)

Если вы используете Python 3.x, замените raw_input() на input().

0 голосов
/ 03 января 2012

Небольшой пример кода для начала ...

streetno =
    {
     "1":"Sachin Tendulkar",
     "2":"Sehawag",
     "3":"Dravid",
     "4":"Dhoni",
     "5":"Kohli"
     }

input=raw_input()
try:
    print streetno[input]
except KeyError:
    print [k for k, v in streetno.items() if v == input][0]
0 голосов
/ 03 января 2012

Вы можете создать вспомогательный словарь с обратными отображениями:

In [4]: dict((v,k) for k,v in streetno.items())
Out[4]: 
{'Dhoni': '4',
 'Dravid': '3',
 'Kohli': '5',
 'Sachin Tendulkar': '1',
 'Sehawag': '2'}

Как только вы знаете, каким образом вам нужно отобразить, вы используете для поиска либо оригинальный, либо вспомогательный словарь.

0 голосов
/ 03 января 2012

Если пользователь вводит «целое число», вы можете явно индексировать его в словарь (т. Е. streetno[value]).Ваши ключи выглядят как строки, так что вы можете избежать необходимости приводить их к целым числам или делать что-либо, чтобы обойти проблему, что это может быть строка или целое число.Если бы ваши ключи были целыми числами, то вам пришлось бы сделать небольшое приведение и окончательный вывод - что я оставлю вам в качестве упражнения.

Что касается обратного, то если вы хотите создать обратное отображениесловаря (который, я думаю, вы делаете), тогда вам лучше всего взглянуть на этот ТАК вопрос и ответить .Вам придется создать для него отдельный словарь и использовать этот метод для сопоставления значений ключа в обратном направлении.

0 голосов
/ 03 января 2012

Проверьте раздел «Словари» на этом сайте для документации: http://docs.python.org/tutorial/datastructures.html

streetno.keys () предоставляет ключи, и вы можете перебирать ключи, чтобы получить значения:

псевдокод:


        foreach key in streetno.keys()
            print "key: ", key, ", value: ", streetno[ key ] 

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...