There are a bunch of ways to do this. If you have a lot of data then I'd recommend that you go ahead and tackle a database based implementation using python's built-in sqlite support (which is actually not that hard). A database engine is purpose built for searching. You would need two tables since you can have multiple colors per person. The person table would have the following columns: id, name, model, state. The colors table would have: personid, color. The personid column would contain the id number that the row in the color table corresponds to. You can then have multiple rows in the color table with the same personid value (which is the database version of a list). sqlAlchemy is a library to help implement a database using python objects which you may find more appropriate with what you are trying to do. The sqlAlchemy ORM Tutorial walks you through working with an sqlite database with two tables (users, addresses) that are very similar to what you would need.
Now if you want stick with python classes alone you are going to have to have a list of people instances and iterate through them all looking for matches. A handy simplification for your color matching is to convert the color lists to sets and do an intersection.
>>> s1 = set(['red','blue','yellow'])
>>> s2 = set(['red','blue'])
>>> s1.intersection(s2)
set(['blue', 'red'])
A shortcut for your iteration through the list of people instances is to use python's itertools library and use the permutations generator.
from itertools import permutations
people = ['p1', 'p2', 'p3']
for p1, p2 in itertools.permutations(people,2):
print p1, p2
p1 p2
p1 p3
p2 p1
p2 p3
p3 p1
p3 p2
Hopefully this is enough to help you along your way. Rereading your question it looks like you may need to do more reading on programming in python. But to address your question about lists here is a little bit of code that may help you out.
class Person(object):
def __init__(self, name, model, colors, state):
self.name = name
self.model = model
self.colors = colors
self.state = state
p1 = Person('p1', 'ford', ['red', 'blue'], 'new-york')
p2 = Person('p2', 'honda', ['red', 'blue'], 'new-york')
persons = [p1, p2]
# or
persons = []
persons.append(p1)
persons.append(p2)
p1.color.append('yellow')
# or
persons[0].color.append('yellow')