python - 尝试将字典中的数据分配给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'
解决方案
您指的是不存在的密钥'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
推荐阅读
- spring - 需要进行身份验证才能获得访问令牌 - 使用“密码”授权和 Spring 的 ResourceOwnerPasswordResourceDetails 时
- java - 我用 Bytebuddy 添加的方法没有被调用,但没有错误
- javascript - 是否可以设置 keydown 事件延迟?
- c++ - C ++模板参数作为成员指针将是按引用调用的有效方式吗?
- python - 如何更改 PreText 或 Paragraph 小部件的字体?
- javascript - Redux 中 Immer 中 Object.assign() 的意外行为
- javascript - mongodb批量插入 - Javascript不起作用
- ios - 如何为 iOS 13 的 SF Symbols 设置权重?
- ruby-on-rails - rails active storage 错误的 url - 301 状态
- algorithm - 将列表操作转换为基于索引的算法