【发布时间】:2021-10-15 23:51:57
【问题描述】:
我正在尝试以字典的形式订购列表用户数据,其中包含由 API 生成的随机用户数据。我正在使用 .get 从列表中的字典中提取出生日期 (dob) 来组织数据,但我不断收到错误消息“AttributeError: 'randomuser' object has no attribute 'get'”。由于问题似乎来自与“randomuser”类的交互,因此我尝试通过将用户数据直接放入主程序循环中的用户字典来绕过该类,这似乎有效。但是,当我尝试学习 OOP 时,感谢任何帮助解释我在“随机用户”课程中哪里出错的地方!干杯!
import requests
import json
class randomuser(object):
def __init__(self, firstname, lastname, gender, username, password, dob) -> None:
self.firstname = firstname
self.lastname = lastname
self.gender = gender
self.username = username
self.password = password
self.dob = dob
self.user_dict = {
"firstname": self.firstname,
"lastname": self.lastname,
"gender": self.gender,
"username": self.username,
"password": self.password,
"dob": self.dob
}
def __repr__(self):
return str(self.user_dict)
"""
create a 10 user list with 5 men and 5 women
"""
male = 0
female = 0
user_list = []
while male < 5 or female < 5:
response = requests.get("https://randomuser.me/api/") # pulls JSON object from API
user = json.loads(response.text)['results'][0] # converst to Python dictionary
firstname = user['name']["first"]
lastname = user['name']["last"]
gender = user['gender']
username = user['login']['username']
password = user['login']['password']
dob = user['dob']['date']
new_user = randomuser(firstname, lastname, gender, username, password, dob)
if gender == 'male' and male < 5:
male += 1
user_list.append(new_user)
elif gender == 'female' and female < 5:
female += 1
user_list.append(new_user)
"""
sort user list by DOB
"""
user_list.sort(key=lambda x: x.get('dob'))
print(user_list)
【问题讨论】: