如何在Python中搜索具有多个值的字典?
我是Python新手,我对用Python搜索字典有疑问 我的文件如下所示,我想搜索 名称包含“Jige”,大小为“29”(即第1行) 名称包含“修剪”,大小为“31”(最后一行) 不知道如何用Python3编写代码。最好是有一个search_key变量从用户那里获取参数 提前谢谢 我的档案:如何在Python中搜索具有多个值的字典?,python,jupyter-notebook,Python,Jupyter Notebook,我是Python新手,我对用Python搜索字典有疑问 我的文件如下所示,我想搜索 名称包含“Jige”,大小为“29”(即第1行) 名称包含“修剪”,大小为“31”(最后一行) 不知道如何用Python3编写代码。最好是有一个search_key变量从用户那里获取参数 提前谢谢 我的档案: [{'name': 'Jige 29 clutch', 'price': '250', 'size': '29'}, {'name': 'Her 33 bag', 'price': '530', 'siz
[{'name': 'Jige 29 clutch', 'price': '250', 'size': '29'},
{'name': 'Her 33 bag', 'price': '530', 'size': '33'},
{'name': 'Tote 24 bag', 'price': '480', 'size': '24'},
{'name': 'Yona 34 bag', 'price': '400', 'size': '34'},
{'name': 'Trim 24 bag', 'price': '390', 'size': '24'},
{'name': 'Trim double 31 bag', 'price': '400', 'size': '31'}]
您可以简单地将其转换为dataFrame,如下所示:
df = pd.DataFrame(d)
# name contains 'Jige', size is '29' and name contains 'Trim' , size is '31'
df[(df['name'].str.contains('Jige')) | (df['name'].str.contains('Trim')) | (df['size'] == 31) ]
我使用或(|)来显示数据,但您可以使用和(&)
您可以简单地将其转换为数据帧,如下所示:
df = pd.DataFrame(d)
# name contains 'Jige', size is '29' and name contains 'Trim' , size is '31'
df[(df['name'].str.contains('Jige')) | (df['name'].str.contains('Trim')) | (df['size'] == 31) ]
我使用或(|)来显示数据,但您可以使用和(&)
我想搜索名称包含“Jige”,大小为“29”,名称包含“Trim”,大小为“31”
没有符合您要求的条件的记录。如果您将
和
操作符切换到或
操作符,您将获得很少的记录
data= [{'name': 'Jige 29 clutch', 'price': '250', 'size': '29'},
{'name': 'Her 33 bag', 'price': '530', 'size': '33'},
{'name': 'Tote 24 bag', 'price': '480', 'size': '24'},
{'name': 'Yona 34 bag', 'price': '400', 'size': '34'},
{'name': 'Trim 24 bag', 'price': '390', 'size': '24'},
{'name': 'Trim double 31 bag', 'price': '400', 'size': '31'}]
filtered_data = [e for e in data if 'Jige' in e['name'] and 'Trim' in e['name'] and e['size'] == '29' and e['size'] == '31']
print(f'filtered_data: {filtered_data}')
filtered_data2 = [e for e in data if 'Jige' in e['name'] or 'Trim' in e['name'] or e['size'] == '29' or e['size'] == '31']
print(f'filtered_data2: {filtered_data2}')
我想搜索名称包含“Jige”,大小为“29”,名称包含“Trim”,大小为“31”
没有符合您要求的条件的记录。如果您将
和
操作符切换到或
操作符,您将获得很少的记录
data= [{'name': 'Jige 29 clutch', 'price': '250', 'size': '29'},
{'name': 'Her 33 bag', 'price': '530', 'size': '33'},
{'name': 'Tote 24 bag', 'price': '480', 'size': '24'},
{'name': 'Yona 34 bag', 'price': '400', 'size': '34'},
{'name': 'Trim 24 bag', 'price': '390', 'size': '24'},
{'name': 'Trim double 31 bag', 'price': '400', 'size': '31'}]
filtered_data = [e for e in data if 'Jige' in e['name'] and 'Trim' in e['name'] and e['size'] == '29' and e['size'] == '31']
print(f'filtered_data: {filtered_data}')
filtered_data2 = [e for e in data if 'Jige' in e['name'] or 'Trim' in e['name'] or e['size'] == '29' or e['size'] == '31']
print(f'filtered_data2: {filtered_data2}')
这回答了你的问题吗?这回答了你的问题吗?请不要使用图片作为答案。使用代码(作为文本)我确实使用了代码,我显示了结果的图像,图像有什么问题吗?请不要使用图像作为答案。使用代码(作为文本)我确实使用了代码,我显示了结果的图像,图像有什么问题?