从使用username的列表返回Dictionary



我创建了一个函数来返回字典对象。我不能用用户名调用它,但得到以下错误:'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')

这里有几处错误:

  1. reviewers_dicts['Username']给你一个字符串"bkpn1412",它没有.items()属性。
  2. 你想检查filter_string与字典中的"Username"键,而不是检查字典中是否有filter_string
  3. 正如你的函数的名字所暗示的,你想要找到一个用户,而不是得到一个用户列表/字典(假设用户名是唯一的)

解决方案如下:

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