繁体   English   中英

用Python在字典中创建字典

[英]Creating Dictionaries within a Dictionary in Python

我正在尝试创建一个词典,其中包含像通讯录这样的条目。 我正在通过re.compile读取一些数据。 我得到了不同组中的元素,并将它们添加到字典中。 但是最后,我只剩下最后一个“人”。 它会覆盖所有其他条目。 有没有办法用相同的键来创建这么长的记录列表?

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’}
}

存储一份字典列表,每人一份:

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

如果您在其他地方使用其他元素,请用一个有用的名称替换每个_

您需要一个清单:

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}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM