2013-08-23 5 views
1

Я пишу что-то, что анализирует каталог по строкам в Python. Части моего текста следующий формат:Назначение нескольких переменных в Python поэтапный анализ

SMITH, JOHN 
(123) 456-7890 
(134) 193-2495 
(284) 282-6829 

Я хочу, чтобы назначить три номера телефона к трем разным переменным (т.е. Phone1, phone2, phone3) все связанные с человеком, Джон Смит. Я думаю о приближении к нему, тестируя, чтобы проверить, были ли уже назначены переменные. Например, если у телефона1 уже есть назначенный ему номер телефона, Python знает, чтобы назначить его на телефон2. Если phone2 также был назначен, он автоматически назначает его телефону3. Какой самый простой способ написать что-то, что делает это? Я открыт для любых других предложений.

+0

Если это вся информация у вас есть, и если нет ограничений на количество телефонных номеров, человек может иметь, вы должны использовать массив. – acjay

+0

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

ответ

3

Почему бы не сохранить ваши номера телефонов в списке? Затем вы не ограничены тремя на человека. Предположим, что ваш список контактов были сохранены в качестве словаря, вы можете получить доступ к ним, как это:

contacts = { 'SMITH, JOHN' : ["(123) 456-7890", "(134) 193-2495", "(284) 282-6829"] } 

# printing third phone number for SMITH, JOHN (note that numbering starts at 0) 
print contacts['SMITH, JOHN'][2] 

# printing number of phone numbers for SMITH, JOHN 
print len(contacts['SMITH, JOHN']) 

# adding a new phone number for SMITH, JOHN: 
contacts['SMITH, JOHN'].append("(818) 555-1212") 

Конечно, вы, вероятно, хотите сделать что-то более сложное, чем обрабатывать первый & фамилию, другие необходимые поля , и т. д., но это будет способ обработки нескольких телефонных номеров чистым способом.

0
d = {} 

class phone(): 
    def __init__(self, arg): 
     self.phone = list(arg[:3]) 
    def add(self, arg): 
     for i in self.phone: 
      for j in arg: 
       if i == j: 
        print("error") 
        return 0 
     if len(self.phone) + len(arg) <= 3: 
      for j in arg: 
       self.phone.append(j) 
     else: 
      print("error") 

def add(name, *arg): 
    if d.get(name): 
     d[name].add(arg) 
    else: 
     d.update({name : phone(arg)}) 

>>> add("SMITH, JOHN", "(123) 456-7890") 
>>> add("SMITH, JOHN", "(134) 193-2495", "(284) 282-6829") 
>>> d["SMITH, JOHN"].phone 
['(123) 456-7890', '(134) 193-2495', '(284) 282-6829'] 
Смежные вопросы