2015-12-21 4 views
0

Допустим, у меня есть список, состоящий из нескольких клиентов, число магазина, фамилия, имя и адрес, который в этом формате:Как я могу организовать мои данные

11, 2, Lisa, Anderson, NewYork 

13, 4, John, Smith, Alabama 

54, 2, Lucy, Nicholsson, NewYork 

etc. 

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

+0

определяют 'class' с этими атрибутами, а затем создайте методы, которые будут обрабатывать и возвращать требуемую информацию. – dstudeba

+0

Я достаточно уверен, что [учебник по Python] (https://docs.python.org/3/tutorial/) охватывает все возможные варианты. У вас возникла определенная проблема в понимании/применении этого? – millimoose

ответ

2

Вы можете использовать pandas. Он предоставляет таблицы, подобные таблицам (или таблицы), которые могут использоваться для хранения и запроса данных. Как это:

import pandas as pd 
df = pd.DataFrame([ 
     [11, 2, 'Lisa', 'Anderson', 'NewYork'], 
     [13, 4, 'John', 'Smith', 'Alabama'], 
     [54, 2, 'Lucy', 'Nicholsson', 'NewYork'] 
     ], columns = ['cl_number', 'store', 'first_name', 'last_name','address']) 

df.index=df["cl_number"] 
# rows will be indexed with cl_number 

df.loc[11] 
# returns a record of client with number 11 

df.loc[11, 'address'] 
# returns address of a client with number 11 

df[df['address'] == 'NewYork'] 
# returns a list of all clients with address 'NewYork' 

Однако вам может понадобиться полнофункциональную базу данных (см SQLite, например).

1

Если данные достаточно последовательны и там не так много, что вы хотите полноценную базу данных, вы можете получить довольно далеко с namedtuple:

from collections import namedtuple 

Client = namedtuple('Client', ('id', 'storeno', 'first_name', 'last_name', 
           'location')) 

# Read the data 
with open('db.csv') as fi: 
    rows = fi.readlines() 
db = {} 
for row in rows: 
    f= row.split(',') 
    db[int(f[0])] = Client(int(f[0]), int(f[1]), f[2].strip(), 
          f[3].strip(), f[4].strip()) 

def find(**kwargs): 
    """Return a list of all Clients matching a given set of criteria.""" 
    matches = [] 
    for client in db.values(): 
     for k,v in kwargs.items(): 
      if getattr(client, k) != v: 
       break 
     else: 
      matches.append(client) 
    return matches 

# Client with ID 11 
print db[11] 

# All clients in New York 
print find(location='NewYork') 
# All clients called Lisa in New York 
print find(location='NewYork', first_name='Lisa') 
Смежные вопросы