我正在写一些在Python中逐行分析目录的东西。我的部分文字遵循以下格式:
SMITH, JOHN
(123) 456-7890
(134) 193-2495
(284) 282-6829
我想将三个电话号码分配给三个与John Smith相关的不同变量(即phone1,phone2,phone3)。我正在考虑通过测试来查看变量是否已经分配。例如,如果phone1已经分配了一个电话号码,Python就知道将它分配给phone2。如果还分配了phone2,则它会自动将其分配给phone3。写这样做的最简单方法是什么?我也对任何其他建议持开放态度。
答案 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']