Как индексировать в словарь?



у меня есть словарь ниже:



colors = {
"blue" : "5",
"red" : "6",
"yellow" : "8",
}


как проиндексировать первую запись в словаре?



colors[0] вернет a KeyError по понятным причинам.

696   9  

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

    Ничего не найдено.