2013-02-10 3 views
0

В настоящее время я разрабатываю скрипт в Python 2.7, который вытягивает приблизительно 50 значений строк из URL-адреса и помещает эти значения в список.Структурирование данных в Python (список из списков?)

Для каждого из этих 50 значений каждый из них имеет следующие соответствующие 20 строковых значений.

Так, например, я могу записать два начальных значения из URL-адреса, которые являются «Ford» и «BMW». Затем я попрошу «Форда» найти связанные модели, такие как «Фокус» и «Мондео» и т. Д.

В конце концов мне нужно присоединиться к этим значениям, чтобы выполнить дополнительный URL-запрос (например, www.ford. com/fiesta и www.ford.com/mondeo и www.bmw.com/xxxx)

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

Есть ли лучший способ структурирования данных?

+0

Почему бы не использовать пользовательские классы? –

+0

У меня нет опыта использования пользовательских классов :-(Будет ли теперь Google – thefragileomen

+0

Просто следуйте инструкциям [python tutorial] (http://docs.python.org/2/tutorial/), это язык OO, так что вы можете также узнать, как определить класс. Это довольно просто. –

ответ

2

Дружелюбный совет: держите вещи простыми. Обратитесь к Zen Python, если у вас есть сомнения: http://www.python.org/dev/peps/pep-0020/

«Простой лучше, чем сложный».

Я бы для Dict списков, или даже лучше, defaultdict (http://docs.python.org/2/library/collections.html#collections.defaultdict):

from collections import defaultdict 


cars = defaultdict(list) 

cars["Ford"].append("Mondeo") 
cars["Ford"].append("Focus") 
cars["BMW"].append("SuperCoolModel") 

print cars 

Дает:

defaultdict(<type 'list'>, {'BMW': ['SuperCoolModel'], 'Ford': ['Mondeo', 'Focus']}) 
1

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

class CarBrand(object): 
    def __init__(self, name): 
     self.name = name 
     self.domain = "http://www.%s.com/" % name.lower() 

class CarModel(object): 
    def __init__(self, name, brand): 
     self.name = name 
     self.brand = brand 
    def url_query(self): 
     return "%s%s" % (self.brand.domain, self.name.lower()) 
Смежные вопросы