Сравнить, если все элементы равны

#python #dictionary #compare

#python #словарь #Сравнить

Вопрос:

Мне нужно проверить, все ли элементы в моем dict равны.

Я пытаюсь с этим (1,1,1,1) просто посмотреть, запустится ли он, но он всегда дает мне »

 Traceback (most recent call last): line 3, in <module>
    if all(sum["lines"]) == sum["lines"][0]:
TypeError: 'set' object is not subscriptable
 

может кто-нибудь показать мне, в чем проблема?
может быть, небольшая помощь, как я могу решить это более простым способом

 sum = {"lines": {1,1,1,1}}

if all(sum["lines"])== sum["lines"][0]:
    print('they all are {}'.format(sum["lines"][0]))
 

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

1. Пожалуйста, обновите свой вопрос с полным ответом на ошибку.

2. Вы имели в виду: ’sum = {«строки»: (1,1,1,1), «столбцы»: (1,1,1,1)}’?

3. Это не причина вашей ошибки, но так не all работает. Ваша ошибка вызвана попыткой индексировать set объект, с помощью которого вы создали {1,1,1,1} . Вероятно, вы хотели создать list объект.

4. как я уже сказал, я учусь, и я был уверен, что это сработает

5. есть ли способ сделать это, сравнив набор?

Ответ №1:

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

 sum = {"lines": {1,1,1,1}, "columns": {1,1,1,1}}
if len(sum["lines"]) == 1:
  print('they all are {}'.format(sum["lines"]))
 

Ответ №2:

Поскольку вы используете наборы, это можно сделать легко:

 if len(sum['linhas']) ==1:
    print('they are all equal')
 

Если значения хранятся в списке, то:

 if len(set(sum['linhas'])) == 1:
    print('they are equal')
 

Или

 if sum['linhas'].count(sum['linhas'][0]) == len(sum['linhas']):
     print('they are equal')
 

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

1. спасибо за помощь, но разве Len() не просто знает количество элементов в списке?

2. У вас нет никаких списков.

3. Эй, @quamrana, поскольку ты это сказал, я зашел в Google о Len на множестве и обнаружил, что если я использую его, возвращаемое значение — это количество разных элементов. Большое спасибо quamrana Shadowcodder за помощь, вы, ребята, потрясающие!!!!!!

4. Отличные новости. Итак, вы хотели использовать наборы, кортежи или списки внутри вашего dict? Я прошу об этом от имени всех будущих читателей этого вопроса, чтобы устранить путаницу.

5. Я думаю, что моей целью было действительно использовать наборы. Я использую его только для того, чтобы поместить все суммы строк, столбцов и диагоналей матрицы, чтобы я мог сравнить, если все они равны. это решатель судоку, ха-ха.

Ответ №3:

Привет, я здесь тоже новичок, но все равно хотел бы помочь вам решить эту проблему. На мой взгляд, ключевое слово словаря — «lines», но вы используете «linhas» в операторе if. Также вы бы просто использовали оператор if, подобный этому:

 sums = {"lines": {1,1,1,1}, "columns": {1,1,1,1}}
if sums["lines"] == sums["columns"]:
    print("They are equal")
 

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

1. Это была честная ошибка в «linhas» и «lines», извините, я кодировал на португальском, поэтому, когда я пришел в stackoverflow, я попытался перейти на английский, но забыл другой, хахаха. Кроме того, я хотел знать, равны ли все в «строках» друг другу, «столбцов» даже не должно было быть, хахаха.

2. Извините, я неправильно истолковал ваш вопрос. Я думал, вы хотите проверить, равны ли они друг другу. То же самое здесь, честная ошибка.

3. Когда вы используете {} в python, как в данном случае {1,1,1,1}, это набор. Чтобы составить список, вы должны использовать [], например [1,1,1,1] Редактировать: чтобы заставить ваш код работать, вам просто нужно удалить ‘all’ и изменить его из set в list.