0

Pythonでディレクトリを1行ずつ分析するものを書いています。私のテキストの一部は、次の形式に従います。

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

3 つの電話番号を 3 つの異なる変数 (つまり、phone1、phone2、phone3) に割り当てたいと思います。これらはすべて John Smith という人物に関連付けられています。変数が既に割り当てられているかどうかをテストすることでアプローチすることを考えています。たとえば、phone1 に既に電話番号が割り当てられている場合、Python はそれを phone2 に割り当てることを認識しています。phone2 も割り当てられている場合は、自動的に phone3 に割り当てられます。これを行うものを書く最も簡単な方法は何ですか? 他の提案も受け付けています。

4

2 に答える 2

3

電話番号をリストに保存してみませんか? それから、あなたは一人につき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 に答える