Выберите ключ из словаря python

#python #dictionary

#python #словарь

Вопрос:

просматривайте словарь, выбирая из него ключи в цикле?

Например, допустим, у меня есть следующий словарь: {'hello':'world', 'hi':'there'} . Есть ли способ for перебрать словарь и распечатать hello, hi ?

на аналогичной ноте есть ли способ сказать myDictionary.key[1] , и это вернется hi ?

Комментарии:

1. Возможно, вы захотите взглянуть на это: docs.python.org/library/stdtypes.html#mapping-types-dict

Ответ №1:

Вы можете перебирать ключи dict с помощью цикла for:

 >>> for key in yourdict:
>>>    print(key)
hi
hello
  

Если вы хотите, чтобы они были разделены запятыми, вы можете использовать ', '.join .

 >>> print(', '.join(yourdict))
hi, hello
  

на аналогичной ноте есть ли способ сказать MyDictionary.key 1, и это вернет привет

Нет. Ключи в словаре не расположены в каком-либо определенном порядке. Порядок, который вы видите, когда перебираете их, может отличаться от порядка, в котором вы вставили их в словарь, а также порядок теоретически может меняться при добавлении или удалении элементов.

если вам нужна упорядоченная коллекция, вы можете рассмотреть возможность использования другого типа, такого как a list или an OrderedDict

Комментарии:

1. как вы говорите, MyDictionary.key(1)? что такое вызов метода?

2. MyDictionary.keys()[1] сделает это, но, как отметил Марк, вы не можете полагаться на порядок

Ответ №2:

Вы можете использовать .keys() метод:

 for key in myDictionary.keys():
   print(key)
  

Вы также можете использовать .items() для перебора обоих одновременно:

 for key, value in myDictionary.items():
   print(key, value)
  

Ответ №3:

Использование имени словаря в качестве последовательности создает все ключи:

 >>> d={'hello':'world', 'hi':'there'}
>>> list(d)
['hi', 'hello']
  

таким list({'hello':'world', 'hi':'there'})[1] образом, создается элемент 1 списка ключей.

Однако это имеет ограниченное применение, поскольку словари неупорядочены. И их порядок может отличаться от порядка вставки:

 >>> d={'a': 'ahh', 'b': 'baa', 'c': 'coconut'}
>>> d
{'a': 'ahh', 'c': 'coconut', 'b': 'baa'}
  

Вы можете сделать sorted(list({'hello':'world', 'hi':'there'}))[1] для 1 элемента отсортированного списка ключей вашего dict. В этом случае получается ‘hi’. Не самый читаемый или эффективный…

Вы должны посмотреть на OrderedDict, если хотите отсортировать порядок.

Или просто отсортируйте по списку:

 >>> d={'a': 'ahh', 'b': 'baa', 'c': 'coconut'}
>>> l=[(k,v) for k, v in d.items()]
>>> l.sort()
>>> l[1]
('b', 'baa')
>>> l[1][0]
'b'
  

Вы можете вернуться (k,v) к (v,k) , если хотите сортировать по значению, а не по ключу.

Ответ №4:

dict.iterkeys в Python 2, dict.keys в Python 3.

 d = { 'hello': 'world', 'hi': 'there' }
for key in d.iterkeys():
    print key
  

Ответ №5:

Похоже, список ключей будет соответствовать вашим потребностям:

 >>> d = { 'hello': 'world', 'hi': 'there' }
>>> keys = list(d)
>>> keys
['hi', 'hello']
>>> from random import choice
>>> choice(keys)
'hi'