在Python中的词典中创建词典

2024-05-21 00:25:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个字典,它有像地址簿这样的条目。我正在读一些数据重新编译. 我得到不同组中的元素并将它们添加到字典中。但到最后,我只剩下最后的“人”。它将覆盖所有其他条目。有没有办法用相同的键创建一长串记录?你知道吗

addressbook = {}

format = re.compile(r'''(([A-Z][a-z]*)([\,][\s])([A-Z][a-z]*) 
    ([\,][\s])(\d{3})([\.])(\d{3})(\.)(\d{4})''', re.VERBOSE)

for q in format1.findall(data):
    lname = q[1] 
    addressbook['lastname'] = lname
    fname = q[3]
    addressbook['firstname'] = fname
    ph1 = q[5]
    ph2 = q[7]
    ph3 = q[9]
    phone = ph1 +  ph2  + ph3
    addressbook['phonenumber'] = phone   

我希望它看起来像这样:

{‘people’: 
{‘firstname’: ‘Joe’, ‘lastname’: ‘Smithe’, ‘phone’: ‘5563036594’}, 
{‘firstname’: ‘John’, ‘lastname’: ‘Lesley’, ‘phone’: ‘5961236448’},
{‘firstname’: ‘Betty’, ‘lastname’: ‘Larking’, ‘phone’: ‘3133426598’}
}

Tags: 数据re元素字典地址phone条目firstname
2条回答

您需要一个列表:

people_format = re.compile(r'''([A-Z][a-z]*)(?:,\s)([A-Z][a-z]*) 
    (?:,\s)(\d{3})(?:\.)(\d{3})(?:\.)(\d{4})''', re.VERBOSE)

people = []
for lastname, firstname, ph1, ph2, ph3 in people_format.findall(data):
    people.append({
        'lastname': lastname,
        'firstname': firstname,
        'phonenumber': ph1 + ph2 + ph3
    })
addressbook = {'people': people}

储存一份口述清单,每人一份:

addressbook = {"people": []}

for q in format1.findall(dataIn):
    d = {'lastname': q[1], 'firstname': q[3],
         d['phonenumber']: "{}{}{}".format(q[5], q[7], q[9])}
    addressbook["people"].append(d)

如果您正好有十个元素,您可以打开:

addressbook = {"people": []}
for _, fn, _, ln, _, ph1, _, ph2, _, ph3 in format1.findall(dataIn):
    addressbook["people"].append({'lastname': ln, 'firstname': fn,
                                'phonenumber': ph1 + ph2 + ph3})

如果在其他地方使用其他元素,请用有用的名称替换每个_。你知道吗

相关问题 更多 >