2013-08-23 71 views
1

我正在寫一些在Python中逐行分析目錄的東西。我的文字部分的格式如下:在Python中分配多個變量逐行分析

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

我想了個電話號碼分配給三個不同的變量(即PHONE1,PHONE2,電話3)所有的人約翰·史密斯有關。我正在考慮通過測試來了解變量是否已經分配。例如,如果phone1已經有一個電話號碼分配給它,Python知道分配給phone2。如果phone2也已分配,則它會自動將其分配給phone3。寫這樣的東西最簡單的方法是什麼?我也接受任何其他建議。

+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']