在Python逐行分析中分配多个变量

时间:2013-08-23 02:11:44

标签: python

我正在写一些在Python中逐行分析目录的东西。我的部分文字遵循以下格式:

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

我想将三个电话号码分配给三个与John Smith相关的不同变量(即phone1,phone2,phone3)。我正在考虑通过测试来查看变量是否已经分配。例如,如果phone1已经分配了一个电话号码,Python就知道将它分配给phone2。如果还分配了phone2,则它会自动将其分配给phone3。写这样做的最简单方法是什么?我也对任何其他建议持开放态度。

2 个答案:

答案 0 :(得分: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")

当然,你可能想要做一些比处理第一个和第二个更复杂的事情。姓氏,其他必要字段等,但这将是一种以干净的方式处理多个电话号码的方法。

答案 1 :(得分: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']