Python:如何过滤字典?
我想实现以下目标,但使用字典Python:如何过滤字典?,python,pandas,dictionary,Python,Pandas,Dictionary,我想实现以下目标,但使用字典 name_selected = "Jason" if name_selected == "John": age = 10 gender = "Male" elif name_selected == "Jason": age = 20 gender = "Male" print(age, gender) 由于您正在测试name\u
name_selected = "Jason"
if name_selected == "John":
age = 10
gender = "Male"
elif name_selected == "Jason":
age = 20
gender = "Male"
print(age, gender)
由于您正在测试
name\u selected==…
,因此name\u selected
的可能值就是您想要的字典。字典是一种结构,用于替换变量的elif查找
有鉴于此,您可以通过多种方式存储剩余的数据。下面是一个可以解包的元组:
data = {'John': (10, 'Male'),
'Jason': (20, 'Male')}
那你就可以了
age, gender = data[name_selected]
您可以使用另一个嵌套字典来扩展此想法:
data = {'John': {
'age': 10, 'gender': 'Male'},
'Jason': {
'age': 20, 'gender': 'Male'}
}
现在最好不要打开包装:
person = data[name_selected]
# use person ['age'] and person['gender']
一个更为特定于应用程序的解决方案是使值成为自定义对象(如
collections.namedtuple
),这将允许您以属性的形式访问个人的数据。这是一个糟糕的数据组织。如果您将名称设置为字典键,则会更好:
data = {
"John": { "age": 10, "gender": "Male"},
"Jason": { "age": 20, "gender": "Male"}
}
age = data[name_selected]["age"]
gender = data[name_selected]["gender"]
但是,如果您仍在使用数据结构,可以使用index()
获取name
元素中的索引,然后使用该索引获取其他元素中的相应值
try:
index = data['name'].index(name_selected)
age = data['age'][index]
gender = data['gender'][index]
except:
print(f'{name_selected} not found')
谢谢你说出了这个糟糕的结构。我有一个关于坚持或改变它的问题。@thebadgateway我认为你的警告是没有必要的。原始的
if
代码也只支持名称的一个匹配项。这是等价的。
try:
index = data['name'].index(name_selected)
age = data['age'][index]
gender = data['gender'][index]
except:
print(f'{name_selected} not found')