9 ответов:
словари неупорядочены в версиях Python до и включая Python 3.6. Если вы не заботитесь о порядке записей и хотите получить доступ к ключам или значениям по индексу в любом случае, вы можете использовать
d.keys()[i]иd.values()[i]илиd.items()[i]. (Обратите внимание, что эти методы создают список всех ключей, значений или элементов в Python 2.x. поэтому, если они вам нужны более одного раза, сохраните список в переменной для повышения производительности.)если вы заботитесь о порядке в записях, начиная с Питоном 2.7 вы можете использовать
collections.OrderedDict. Или используйте список парl = [("blue", "5"), ("red", "6"), ("yellow", "8")]если вам не нужен доступ по ключу. (Кстати, почему ваши номера строки?)
в Python 3.7 обычные словари упорядочены, поэтому вам не нужно использовать
OrderedDictбольше (но вы все еще можете – это один и тот же тип). Реализация CPython Python 3.6 уже включала это изменение, но поскольку оно не является частью спецификации языка, вы не можете полагаться на него в Python 3.6.
если кто-то еще смотрит на этот вопрос, в настоящее время принимаются ответ устарели:
так как Python 3.6 словари приказ-сохранить, то есть они сейчас ведут себя именно так
collections.OrderedDictиспользуется для. К сожалению, до сих пор нет специального метода для индексирования вkeys()/values()словаря, поэтому получение первого ключа / значения в словаре может быть сделано какfirst_key = list(colors.keys())[0] first_val = list(colors.values())[0]или (это позволяет избежать создания экземпляра ключей посмотреть в список):
def get_first_key(dictionary): for key in dictionary.keys(): return key first_key = get_first_key(colors) first_val = colors[first_key]Если вам нужен
n- й ключ, то аналогичноdef get_nth_key(dictionary, n=0): if n < 0: n += len(dictionary) for i, key in enumerate(dictionary.keys()): if i == n: return key raise IndexError("dictionary index out of range")
обращение к элементу словаря-это как сидеть на осле и наслаждаться поездкой.
как правило Python словарь без порядка
если есть
dic = {1: "a", 2: "aa", 3: "aaa"}теперь предположим, если я пойду как
dic[10] = "b", то он не будет добавлять так всегдаdic = {1:"a",2:"aa",3:"aaa",10:"b"}это может быть как
dic = {1: "a", 2: "aa", 3: "aaa", 10: "b"}или
dic = {1: "a", 2: "aa", 10: "b", 3: "aaa"}или
dic = {1: "a", 10: "b", 2: "aa", 3: "aaa"}или любая такая комбинация.
так большого пальца руки правило - это словарь и orderless!
на самом деле я нашел новое решение, которое действительно помогло мне, Если вы особенно обеспокоены индексом определенного значения в списке или наборе данных, вы можете просто установить значение словаря в этот индекс!:
просто смотри:
list = ['a', 'b', 'c'] dictionary = {} counter = 0 for i in list: dictionary[i] = counter counter += 1 print(dictionary) # dictionary = {'a':0, 'b':1, 'c':2}Теперь благодаря силе хэш-карт вы можете вытащить индекс ваших записей в постоянное время (он же намного быстрее)
Если вам нужен упорядоченный словарь, вы можете использовать odict.
вы не можете, так как
dictнеупорядочены. вы можете использовать.popitem()чтобы получить произвольный элемент, но это удалит его из dict.
import collections # Declaring namedtuple() dimensions = collections.namedtuple('colors',['blue','red','yellow']) S = dimensions('5','6','8') # Access using index print ("The dimension of red using index is : ",end ="") print (S[1]) # Access using name print ("The dimension of red using keyname is : ",end ="") print (S.red) # Access using getattr() print ("The dimension of red using getattr() is : ",end ="") print (getattr(S,'red'))
словари не перечислены.
со списками вы можете просто сделать
enter foo[0] hereчтобы получить это значение.словарь есть .ценность и. ключевая функция.
его также более целесообразно использовать try / за исключением тех случаев, когда вы повторяете через дикт.
поскольку структура данных словаря неупорядочена, поэтому вы не можете индексировать первую запись словаря, тогда как мы можем индексировать значения в словаре.
new_dict= {'first': 'Meghshyam', 'second': 'Sonar', 'third': '1993'}#выше словарь содержит три значения.
#следующий код написать индекс первое значение словаря с помощью ключа
new_dict['first'][0]#мы просто индексируем первую букву значения, используя соответствующий ключ.
надеюсь, что это ясное понятие.
Comments