我们可以根据python中的id过滤字典吗?

2024-04-19 07:38:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我想问一下,我们是否可以在python中筛选出只包含特定单词的id。 我有这两个json文件。我想筛选只包含“def####”的id?你知道吗

a= [{'id':'abc23','name':'aa','age':'22',
     'data':{'read':'','speak':''},
     'responses':{'a':1,'b':2}},
     {'id':'abc25','name':'bb','age':'32',
      'data':{'read':'','speak':''},
      'responses':{'a':1,'b':2}},
    {'id':'abc60','name':'cc','age':'24',
     'data':{'read':'','speak':''},
     'responses':{'a':1,'b':2}},
    {'id':'def23','name':'aa','age':'22',
     'data':{'read':'','speak':''},
     'responses':{'a':1,'b':2}},
     {'id':'def25','name':'bb','age':'32',
      'data':{'read':'','speak':''},
      'responses':{'a':1,'b':2}},
    {'id':'def60','name':'cc','age':'24',
     'data':{'read':'','speak':''},
     'responses':{'a':1,'b':2}}]

输出应为: ID“def”仅为exis。你知道吗

[{'id':'def23','name':'aa','age':'22',
'data':{'read':'','speak':''},
'responses':{'a':1,'b':2}},
{'id':'def25','name':'bb','age':'32',
'data':{'read':'','speak':''},
'responses':{'a':1,'b':2}},
{'id':'def60','name':'cc','age':'24',
'data':{'read':'','speak':''},
'responses':{'a':1,'b':2}}]

Tags: nameidreadagedatadefresponses单词
2条回答

如果要检查id的值中是否包含def的某些单词,只需执行以下操作:

for dict_row in a:
    if 'def' in dict_row['id']:
        print(dict_row)

输出

{'id': 'def23', 'name': 'aa', 'age': '22', 'data': {'read': '', 'speak': ''}, 'responses': {'a': 1, 'b': 2}}
{'id': 'def25', 'name': 'bb', 'age': '32', 'data': {'read': '', 'speak': ''}, 'responses': {'a': 1, 'b': 2}}
{'id': 'def60', 'name': 'cc', 'age': '24', 'data': {'read': '', 'speak': ''}, 'responses': {'a': 1, 'b': 2}}

您可以使用list comprehension来获得返回词典的列表:

def_list = [dict_row for dict_row in a if 'def' in dict_row['id']]

将列表理解与startswith一起使用:

a = [x for x in a if x['id'].startswith('def')

或按前3个字符筛选:

a = [x for x in a if x['id'][:3] == 'def']

相关问题 更多 >