Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 05.05.2020
Сообщений: 19

Создать функцию который ищет в списке кортежей похожий элемент

14.04.2021, 15:23. Показов 1625. Ответов 8

Студворк — интернет-сервис помощи студентам
Здраствуйте!
У меня есть список кортежей user_objects. Надо создать функцию search в которую передаем список и словарь. Функция должна в списке найти юзера например с {"name": "john"} или {"age": 22}, и вывести все схожие.
Может список кортежей user_objects преобразовать в словарь? Думаю в функции буду проходиться циклом for и сравнивать.
Вот такая ошибка выходит: cannot unpack non-iterable User object когда хочу вывести for i,j in user_objects:
print(i,j). Искал как решить ошибку, но норм не нашел или не понял.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class User:
    def __init__(self, name,  age):
        self.name = name
        self.age = age
    def __repr__(self):
        return repr((self.name, self.age))
 
user_objects = [
    User('john', 15),
    User('jane', 12),
    User('dave', 10),
]
print(user_objects)
for i,j in user_objects:
    print(i,j)
 
def search(listUsers, dict):
    ...
serch(user_objects, {"name": "john"})
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.04.2021, 15:23
Ответы с готовыми решениями:

Составить оператор FIND_MAX, который ищет максимальный элемент в "списке"
Составить оператор FIND_MAX, который ищет макси-мальный элемент в «списке». Помогите плиз с задачей

Создать метод, который определяет, есть ли в списке L хотя бы один элемент, который равен следующему по кругу
Помогите пожалуйста создать метод, который определяет, есть ли в списке L хотя бы один элемент, который равен следующему за ним (по кругу)...

Реализовать функцию поиска в списке кортежей
Написать функцию Lookup My :: Eq a=> a->b->->b, которая берёт значение xa типа а, значение xb типа b, и список кортежей. Функция должна...

8
 Аватар для codcw
815 / 527 / 214
Регистрация: 22.12.2017
Сообщений: 1,495
14.04.2021, 15:50
******kro,
Цитата Сообщение от ******kro Посмотреть сообщение
вывести все схожие
вывести юзеров с таким же ключом или значением? или как?
0
1 / 1 / 0
Регистрация: 05.05.2020
Сообщений: 19
15.04.2021, 06:01  [ТС]
Да вывести юзером где name или age какой то. Сами задаем
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
15.04.2021, 06:09
Цитата Сообщение от ******kro Посмотреть сообщение
У меня есть список кортежей user_objects.
нету, у тебя список объектов класса Юзер

Цитата Сообщение от ******kro Посмотреть сообщение
когда хочу вывести for i,j in user_objects:
это не кортеж!

вот алгоритм - в функции бежим по списку и проверяем что а) у объекта вообще есть атрибут указанный в словаре-фильтре, б) значение равно значению в словаре-фильтре, если равно то выводим или там откладываем в результат чтобы вернуть.
0
1 / 1 / 0
Регистрация: 05.05.2020
Сообщений: 19
15.04.2021, 06:18  [ТС]
Разве вот такое - >[('', ''), ( ",") не кортеж? Я понял, что надо пройтись по нему. Но выводит ошибку not iterable...
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
15.04.2021, 06:25
Цитата Сообщение от ******kro Посмотреть сообщение
[('', ''), ( ",")
я вообще не понимаю что это
вот кортеж (1, 2, 3) или вот (User('a', 10), User('b', 20))

а у тебя [User(), User(), User()] это список объектов Юзер
чувствуешь разницу?

Добавлено через 24 секунды
Цитата Сообщение от ******kro Посмотреть сообщение
Я понял, что надо пройтись по нему.
я тебе дал алгоритм выше
0
1 / 1 / 0
Регистрация: 05.05.2020
Сообщений: 19
15.04.2021, 06:40  [ТС]
Цитата Сообщение от ******kro Посмотреть сообщение
Разве вот такое - >[('', ''), ( ",") не кортеж? Я понял, что надо пройтись по нему. Но выводит ошибку not iterable...
Просто когда я делаю print(user_objects) он выводит [('john', 15), ('jane', 12), ('dave', 10)]. Вот я и подумал, что это список кортеж ей. У меня проблемы не с алгоритмом. Когда я прохожусь по user_objects, выводит ошибку non iterable.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
15.04.2021, 06:54
Лучший ответ Сообщение было отмечено Krakenkro как решение

Решение

******kro, может вернуться к истокам и почитать по ООП и питону в целом?

Цитата Сообщение от ******kro Посмотреть сообщение
Просто когда я делаю print(user_objects) он выводит [('john', 15), ('jane', 12), ('dave', 10)].
это потому что у тебя есть метод __repr__, странно что ты не знаешь для чего он (для строкового представления объекта). Для интреса удали его или закомменти и выведи список юзеров - будешь удивлен

Цитата Сообщение от ******kro Посмотреть сообщение
У меня проблемы не с алгоритмом.
именно с ним и еще с пониманием матчасти

Цитата Сообщение от ******kro Посмотреть сообщение
Когда я прохожусь по user_objects, выводит ошибку non iterable.
Потомучто. Это. НЕ. кортеж!

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

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class User:
    def __init__(self, name, age):
        self.name = name
        self.age = age
 
    def __repr__(self):
        return repr((self.name, self.age))
 
 
def search(a_list, filter_):
    result = []
    key, value = filter_.popitem()
    for user in a_list:
        if hasattr(user, key) and getattr(user, key) == value:
            result.append(user)
    return result
 
 
if __name__ == '__main__':
    user_objects = [
        User('john', 15),
        User('jane', 12),
        User('dave', 10),
        User('******kro', 15)
    ]
    print(user_objects)
    print(search(user_objects, {'age': 12}))  # Jane
    print(search(user_objects, {'age': 22}))  # []
    print(search(user_objects, {'age': 15}))  # john and ******
1
1 / 1 / 0
Регистрация: 05.05.2020
Сообщений: 19
15.04.2021, 07:01  [ТС]
Аххп. Я python неделю изучаю только, могу ошибаться. repr написал потому что выводил [<__main__....]. Просто я спросил у препод список кортеж ей ли или список объектов? Он ответил список кортеж ей и он бы не выводил список объектов. Спасибо за помощь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.04.2021, 07:01
Помогаю со студенческими работами здесь

Функция void poisk (FILE*nf) не ищет в списке элемент
Функция void poisk(FILE*nf) не ищет в списке элемент,выдаёт нули (если это не первый по порядку элемент), не могу понять почему? ...

Описать и проверить процедуру которая ищет в списке L элемент E
Описать и проверить процедуру которая ищет в списке L элемент E.

Найти похожий элемент в изображение, понятие *похожий*
Есть две картинки, первая - побольше - источник, большое изображение, вторая же может являться (или не являться - это нужно определить)...

Не входит в первый if, который ищет минимальный элемент
Подскажите почему не входит в первый if, который ищет минимальный элемент ? #include &quot;pch.h&quot; #include &lt;iostream&gt; ...

Передать делегат в функцию который ищет нужное число
Нужно передать делигат в функцию который ищет нужное число. Нужно сделать функцию сравнения и присвоить ее делигату. private...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru