0

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

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

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

4

2 回答 2

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")

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

于 2013-08-23T02:19:01.707 回答
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']
于 2013-08-23T03:19:19.767 回答