Python find object in list by attribute

How To Find Object In A List Of Objects In Python

This article will share with you how to find objects in a List of objects in Python. To do that, you can use the next() function or iterate the list and check which element accommodates the conditions and return it. Follow us to learn more about it with the explanation and examples below.

Find Object In A List Of Objects In Python

Find an object in the list with the next() function

To find an object in the list, you can use the next() function, it will return the first result that accommodates the conditions. If no element accommodates the conditions, the result will be None.

Читайте также:  Метод post request python

Look at the example below.

class Player: def __init__(self, full_name= '', club = '', age = int(), goals = int()): self.full_name = full_name self.club = club self.age = age self.goals = goals # Override def __str__(self): return self.full_name + ': ' + self.club + ', Age: ' + str(self.age) + ', Goals: ' + str(self.goals) if __name__ == '__main__': # Create four objects. player1 = Player('Cr.Ronaldo', 'Real Madrid', 37, 819) player2 = Player('L.Messi', 'Paris Saint-Germain', 35, 789) player3 = Player('H.Maguire', 'Manchester United', 30, 25) player4 = Player('G.Bale', 'Real Madrid', 33, 295) # Add these objects to the new list. player_list = [player1, player2, player3, player4] # Find the first player in this list whose club is Real Madrid. result = next( (player for player in player_list if player.club == 'Real Madrid'), None ) print(result)

Cr.Ronaldo: Real Madrid, Age: 37, Goals: 819

Find an object in the list with the loop

In this solution, we will find an object in the list with the loop and check the first element that accommodates the conditions. If no element accommodates the conditions, the result will be None.

Look at the example below.

class Player: def __init__(self, full_name= '', club = '', age = int(), goals = int()): self.full_name = full_name self.club = club self.age = age self.goals = goals # Override def __str__(self): return self.full_name + ': ' + self.club + ', Age: ' + str(self.age) + ', Goals: ' + str(self.goals) if __name__ == '__main__': # Create four objects. player1 = Player('Cr.Ronaldo', 'Real Madrid', 37, 819) player2 = Player('L.Messi', 'Paris Saint-Germain', 35, 789) player3 = Player('H.Maguire', 'Manchester United', 30, 25) player4 = Player('G.Bale', 'Real Madrid', 33, 295) # Add these objects to the new list. player_list = [player1, player2, player3, player4] # Find the first player in this list whose club is Real Madrid. result = None for player in player_list: if player.club == 'Real Madrid': result = player break print(result)
Cr.Ronaldo: Real Madrid, Age: 37, Goals: 819

Find all objects in the list with the loop

To find all objects in the list with the loop, you can use the loop and return all elements that accommodate the conditions.

Читайте также:  Найти стандартное отклонение python

Look at the example below.

class Player: def __init__(self, full_name= '', club = '', age = int(), goals = int()): self.full_name = full_name self.club = club self.age = age self.goals = goals # Override def __str__(self): return self.full_name + ': ' + self.club + ', Age: ' + str(self.age) + ', Goals: ' + str(self.goals) if __name__ == '__main__': # Create four objects. player1 = Player('Cr.Ronaldo', 'Real Madrid', 37, 819) player2 = Player('L.Messi', 'Paris Saint-Germain', 35, 789) player3 = Player('H.Maguire', 'Manchester United', 30, 25) player4 = Player('G.Bale', 'Real Madrid', 33, 295) # Add these objects to the new list. player_list = [player1, player2, player3, player4] # Find the all players in this list whose club is Real Madrid. result = [] for player in player_list: if player.club == 'Real Madrid': result.append(player) # Print the result. for element in result: print(element)
Cr.Ronaldo: Real Madrid, Age: 37, Goals: 819 G.Bale: Real Madrid, Age: 33, Goals: 295 

Summary

We have shared with you how to find objects in a List of Objects in Python. To do that, you can use the next() function and the loop. We recommend you use the loop because it is easy to customize and also finds all objects in the list. We hope this tutorial is helpful to you. Thanks!

My name is Thomas Valen. As a software developer, I am well-versed in programming languages. Don’t worry if you’re having trouble with the C, C++, Java, Python, JavaScript, or R programming languages. I’m here to assist you!

Name of the university: PTIT
Major: IT
Programming Languages: C, C++, Java, Python, JavaScript, R

Источник

Searching or Sorting a list of Objects Based on an Attribute in Python

When you want to find which (dog) student works well with the highest number of other (dog) students

Often, when you have a group of objects, you might be looking to sort them based not on their location in memory, but on an attribute of interest. Today, we’ll look at Python’s built in tool for doing just this: operator.attrgetter , as well as the related tools in this toolkit and alternate methods to achieve similar goals (using lambdas and iterators/comprehensions).

For our data set today, we’re going to be using a fictional data set of a pack of 100 dogs. The dog student class has attributes: name , yr , strengths , areas_for_growth , works_well_with , not_works_well_with , has_sat_by , has_not_sat_by , and notes . It has methods that add, get, remove, and these attributes, plus get_n_not_works_well and get_n_works_well that returns the number of friends/frenemies in their respective lists.

How to use attrgetter

Attrgetter is an attribute getter. You can use it in a couple ways:

from operator import attrgetterfriend_getter = attrgetter('works_well_with')
print(friend_getter(dog_pack[1]))

Here friend_getter returns dog_pack[1]’s works_well_with list:

[Student('Qeb', 12), Student('Putty', 6), Student('Douglas', 3), Student('Denali', 5), Student('Asher', 12), Student('Portia', 3), Student('Suki', 2), Student('Olive', 14), Student('Peri', 8), Student('Mari', 5), Student('Snowflake', 2), Student('Guayaba', 12)]

I’m still looking for a context in which you would do this over dog_pack[1].works_well_with . We’ll see one example I ran into below, but I’m not sure I’m convinced.

2. You can use attrgetter with functions that expect a function argument. For example, as the key to sorted(), max(), min(); or with map()…

Источник

Python find object in list | Example code

Python finds the object in the given list that has an attribute (or method result – whatever) equal to the value.

Example Python finds an object in the list

The naive loop-break on the match. This will assign None to x if you don’t break out of the loop.

import random class Test: def __init__(self, value): self.value = value value = 5 test_list = [Test(random.randint(0, 100)) for x in range(300)] def find(val): for x in test_list: if x.value == val: print("Found it!") break else: x = None return find(value) 

Python find object in list

Source: stackoverflow.com

Another example single-expression form

This gets the first item from the list that matches the condition, and returns None if no item matches.

class ProjectFile: def __init__(self, filename: str, number_of_lines: int, language: str, repo: str, size: int): self.filename = filename self.number_of_lines = number_of_lines self.language = language self.repo = repo self.size = size projects = [ ProjectFile( filename="test1.txt", number_of_lines=1, language="English", repo="repo1", size=1, ), ProjectFile( filename="test2.txt", number_of_lines=2, language="German", repo="repo2", size=2 ), ] val = 3 res = next((x for x in projects if x.size == 3), None) print(res) 

Output: None

Do comment if you have any doubts or suggestions on this Python object code.

Note: IDE: PyCharm 2021.3.3 (Community Edition)

Windows 10

Python 3.10.1

All Python Examples are in Python 3, so Maybe its different from python 2 or upgraded versions.

Источник

Python : How to Check if an item exists in list ? | Search by Value or Condition

In this article we will discuss different ways to check if a given element exists in list or not.

Table of Contents

Introduction

Suppose we have a list of strings i.e.

# List of string listOfStrings = ['Hi' , 'hello', 'at', 'this', 'there', 'from']

Now let’s check if given list contains a string element ‘at’ ,

Check if element exists in list using python “in” Operator

Condition to check if element is in List :

It will return True, if element exists in list else return false.

Frequently Asked:

For example check if ‘at’ exists in list i.e.

# List of string listOfStrings = ['Hi' , 'hello', 'at', 'this', 'there', 'from'] # check if element exist in list using 'in' if 'at' in listOfStrings : print("Yes, 'at' found in List : " , listOfStrings)

Condition to check if element is not in List :

# List of string listOfStrings = ['Hi' , 'hello', 'at', 'this', 'there', 'from'] # check if element NOT exist in list using 'in' if 'time' not in listOfStrings : print("Yes, 'time' NOT found in List : " , listOfStrings)

Check if element exist in list using list.count() function

count(element) function returns the occurrence count of given element in the list. If its greater than 0, it means given element exists in list.

# List of string listOfStrings = ['Hi' , 'hello', 'at', 'this', 'there', 'from'] # check if element exist in list using count() function if listOfStrings.count('at') > 0 : print("Yes, 'at' found in List : " , listOfStrings)

Check if element exist in list based on custom logic

Python any() function checks if any Element of given Iterable is True.

Let’s use it to check if any string element in list is of length 5 i.e.

# List of string listOfStrings = ['Hi' , 'hello', 'at', 'this', 'there', 'from'] # Check if element exist in list based on custom logic # Check if any string with length 5 exist in List result = any(len(elem) == 5 for elem in listOfStrings) if result: print("Yes, string element with size 5 found")

Instead of condition we can use separate function in any to match the condition i.e.

# List of string listOfStrings = ['Hi' , 'hello', 'at', 'this', 'there', 'from'] def checkIfMatch(elem): if len(elem) == 5: return True; else : return False; # Check if any string that satisfies the condition # in checkIfMatch() function exist in List result = any(checkIfMatch for elem in listOfStrings)

Complete example is as follows,

def checkIfMatch(elem): if len(elem) == 5: return True; else : return False; # List of string listOfStrings = ['Hi' , 'hello', 'at', 'this', 'there', 'from'] # Print the List print(listOfStrings) ''' check if element exist in list using 'in' ''' if 'at' in listOfStrings : print("Yes, 'at' found in List : " , listOfStrings) ''' check if element NOT exist in list using 'in' ''' if 'time' not in listOfStrings : print("Yes, 'time' NOT found in List : " , listOfStrings) ''' check if element exist in list using count() function ''' if listOfStrings.count('at') > 0 : print("Yes, 'at' found in List : " , listOfStrings) ''' check if element exist in list based on custom logic Check if any string with length 5 exist in List ''' result = any(len(elem) == 5 for elem in listOfStrings) if result: print("Yes, string element with size 5 found") ''' Check if any string that satisfies the condition in checkIfMatch() function exist in List ''' result = any(checkIfMatch for elem in listOfStrings) if result: print("Yes, string element with size 5 found")
['Hi', 'hello', 'at', 'this', 'there', 'from'] Yes, 'at' found in List : ['Hi', 'hello', 'at', 'this', 'there', 'from'] Yes, 'time' NOT found in List : ['Hi', 'hello', 'at', 'this', 'there', 'from'] Yes, 'at' found in List : ['Hi', 'hello', 'at', 'this', 'there', 'from'] Yes, string element with size 5 found Yes, string element with size 5 found

Источник

Оцените статью