首页 > 解决方案 > 尝试将字典中的数据分配给python中的类和对象时出现KeyError

问题描述

使用的文件、数据

Austin = null|Stone Cold Austin|996003892|987045321|Ireland
    keller = null|Mathew Keller|02/05/2002|0199999999|0203140819|019607892|9801 2828 5596 0889

嵌套字典

data = {'Austin': {'Full Name': 'Stone Cold Steve Austin', 'Contact Details': '996003892',  'Emergency Contact Number': '987045321', Country: 'Ireland'}}

我想用来分配字典数据的类和对象

class member2:
    def __init__(self, realname, phone, emergencyContact, country):
            self.realname = realname
            self.phone = phone
            self.emergencyContact = emergencyContact
            self.country = country

将文本文件数据分配到嵌套字典中

with open("something.txt", 'r') as f:
    for line in f:
        key, values = line.strip().split(" = ") # note the space around =, to avoid trailing space in key
        values = values.split('|')
        data2 = {key: dict(zip(keys, values[1:]))}

#给类分配数据(不工作)

        member2.realname = data2[values[2]]
        print(member2)

        if key == username:
            data2 = {key: dict(zip(keys, values[1:]))}

输出

member2.realname = data2[values[2]]
KeyError: 'Stone Cold Steve Austin'

标签: pythonstringdictionaryvariables

解决方案


您指的是不存在的密钥'Stone Cold Steve Austin'

也许您希望访问以下内容data2[key][keys[0]]

keys = ["Full Name", "Contact Details", "Emergency Contact Number", "Country"]
with open("we.txt", 'r') as f:
    for line in f:
        key, values = line.strip().split(" = ") # note the space around =, to avoid trailing space in key
        values = values.split('|')
        data2 = {key: dict(zip(keys, values[1:]))}
        print(data2[key][keys[0]])

输出:

Stone Cold Austin
Mathew Keller

推荐阅读