我创建了一个函数来返回字典对象。我不能用用户名调用它,但得到以下错误:'TypeError: list indices must be integers or slices, not str'
def find_user(df_dict, filter_string):
filtered_dict = dict(filter(lambda item: filter_string in item[0], df_dict.items()))
return filtered_dict
find_user(df_dict=reviewers_dicts['Username'], filter_string='krpz1113')
这里有几处错误:
reviewers_dicts['Username']
给你一个字符串"bkpn1412"
,它没有.items()
属性。- 你想检查
filter_string
与字典中的"Username"
键,而不是检查字典中是否有filter_string
。 - 正如你的函数的名字所暗示的,你想要找到一个用户,而不是得到一个用户列表/字典(假设用户名是唯一的)
解决方案如下:
def find_user(list_of_dicts, filter_string):
for d in list_of_dicts:
if d["Username"] == filter_string:
return d
reviewers_dicts = [
{
"Username": "bkpn1412",
"DOB": "31.07.1983",
"State": "Oregon",
"Reviewed": ["cea76118f6a9110a893de2b7654319c0"],
},
{
"Username": "krpz1113",
"DOB": "21.17.1989",
"State": "Oregon",
"Reviewed": ["jh5b34jh5b3jh5b34jh5b3hj5b3b5jh34"],
},
]
print(find_user(list_of_dicts=reviewers_dicts, filter_string="krpz1113"))