Как я могу напечатать несколько индексов определенного значения в словаре?

Я только изучаю python, и у меня есть проблема. как я могу напечатать несколько индексов определенного значения в словаре? В частности, я хочу напечатать индекс каждого элемента массива Dictionary_title, ключом которого является gender_ids.

dictionary_title = {
{'label': 'Green', 'genre_ids': 878},
{'label': 'Pink', 'genre_ids': 16},
{'label': 'Orange', 'genre_ids': 28},
{'label': 'Yellow', 'genre_ids': 9648},
{'label': 'Red', 'genre_ids': 878},
{'label': 'Brown', 'genre_ids': 12},
{'label': 'Black', 'genre_ids': 28},
{'label': 'White', 'genre_ids': 14},
{'label': 'Blue', 'genre_ids': 28},
{'label': 'Light Blue', 'genre_ids': 10751},
{'label': 'Magenta', 'genre_ids': 28},
{'label': 'Gray', 'genre_ids': 28}}

Это мой код:

   for values in dictionary_title["genre_ids"]: 
   for item in values:       
       if item == 28:      
           print(values.index(item))  

Например, я хочу напечатать index:2,6,8,10,11, которые являются индексами элементов с ключом genre_ids=28. Как мне это сделать?

Ваш объект верхнего уровня dictionary_title — это не словарь, это набор.

The Photon 09.01.2023 20:20
enumerate(dictionary_title)
RomanPerekhrest 09.01.2023 20:21

Во-вторых, словари не хранятся в том порядке, в котором они были введены. В словаре нет индекса для элементов (кроме ключей). Вы можете использовать список вместо набора, если хотите сохранить порядок элементов и иметь возможность их индексировать.

The Photon 09.01.2023 20:21

Спасибо вам, ребята. Так что я не использую ключ и значения словаря udenrstant... так что Diction_Title есть ключ и значение для каждого элемента, так почему же Diction_Title не является словарем?

Elly 09.01.2023 20:35

Dictionary_title СОДЕРЖИТ словари, но сам является набором. Сравните my_set = {a, b, c} и my_dict = {a:b, c:d, e:f}

Swifty 09.01.2023 20:36

@Elly То, что вы показали в качестве объявления для Dictionary_title, синтаксически ошибочно. Вы используете установленный синтаксис. Однако элементы в наборе должны быть хэшируемыми, а словари хешируемыми не являются. Попробуйте запустить свой собственный код, и вы увидите

Pingu 09.01.2023 20:47
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
6
73
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете использовать понимание списка с enumerate.

dictionary_title=[
{'label': 'Green', 'genre_ids': 878},
{'label': 'Pink', 'genre_ids': 16},
{'label': 'Orange', 'genre_ids': 28},
{'label': 'Yellow', 'genre_ids': 9648},
{'label': 'Red', 'genre_ids': 878},
{'label': 'Brown', 'genre_ids': 12},
{'label': 'Black', 'genre_ids': 28},
{'label': 'White', 'genre_ids': 14},
{'label': 'Blue', 'genre_ids': 28},
{'label': 'Light Blue', 'genre_ids': 10751},
{'label': 'Magenta', 'genre_ids': 28},
{'label': 'Gray', 'genre_ids': 28}]

res = [i for i, o in enumerate(dictionary_title) if o['genre_ids'] == 28]
print(res)

спасибо, парень, но у меня есть эта ошибка: res = [i for i, o in enumerate (dictionary_title) if o ['genre_ids'] == 28] TypeError: индексы строк должны быть целыми числами, а не 'str'

Elly 09.01.2023 20:26

Вы, должно быть, сделали опечатку; попробуйте скопировать ответ @Unmitigated.

Swifty 09.01.2023 20:40

@Elly Код в моем ответе работает. Посмотреть в действии здесь. В вашем коде может быть ошибка.

Unmitigated 09.01.2023 20:53

"заголовок словаря" должен быть списком!!! Я оставляю вам код, как это сделать :-)

dictionary_title=[
{'label': 'Green', 'genre_ids': 878},
{'label': 'Pink', 'genre_ids': 16},
{'label': 'Orange', 'genre_ids': 28},
{'label': 'Yellow', 'genre_ids': 9648},
{'label': 'Red', 'genre_ids': 878},
{'label': 'Brown', 'genre_ids': 12},
{'label': 'Black', 'genre_ids': 28},
{'label': 'White', 'genre_ids': 14},
{'label': 'Blue', 'genre_ids': 28},
{'label': 'Light Blue', 'genre_ids': 10751},
{'label': 'Magenta', 'genre_ids': 28},
{'label': 'Gray', 'genre_ids': 28}]

for idx in range(0, len(dictionary_title)):
    if dictionary_title[idx]["genre_ids"] == 28:
        print(idx)

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

Стиль 2: Цикл с использованием enumerate()

for enumerate_item in enumerate(dictionary_title):
    if enumerate_item[1]["genre_ids"] == 28:
        print(enumerate_item[0])

Стиль 3: Цикл с использованием enumerate() только другим способом...

for idx, dict in enumerate(dictionary_title):
    if dict['genre_ids'] == 28:
        print(idx)

Стиль 4: Цикл с использованием понимания списка

rest = [enumerate_item[0] for enumerate_item in enumerate(dictionary_title) if enumerate_item[1]['genre_ids'] == 28]
print(rest)

Стиль 5: Цикл, использующий понимание списка, только другим способом...

rest = [(idx) for idx, dict in enumerate(dictionary_title) if dict['genre_ids'] == 28]
print(rest)

Другие вопросы по теме