如何在Python中使用某些键来选择字典?
我有这类如何在Python中使用某些键来选择字典?,python,json,dictionary,Python,Json,Dictionary,我有这类JSON数据,有大约100个问题。我如何筛选问题,最多只能筛选到40 这是数据样本: data=[{"id": "AA11", "resp": [ {"answer": "A","number": 1}, {"answer": "A","number": 2}, {"answer": "B","number": 3}, {"answer": "D","number": 4}, {"answer": "E","number": 5} ]}, {"id
JSON数据
,有大约100个问题。我如何筛选问题,最多只能筛选到40
这是数据样本:
data=[{"id": "AA11",
"resp": [
{"answer": "A","number": 1},
{"answer": "A","number": 2},
{"answer": "B","number": 3},
{"answer": "D","number": 4},
{"answer": "E","number": 5}
]},
{"id": "AA22",
"resp": [
{"answer": "A","number": 1},
{"answer": "A","number": 2},
{"answer": "B","number": 3},
{"answer": "D","number": 4},
{"answer": "E","number": 5}
]},
{"id": "AA33",
"resp": [
{"answer": "A","number": 1},
{"answer": "A","number": 2},
{"answer": "B","number": 3},
{"answer": "D","number": 4},
{"answer": "E","number": 5}
]}]
在本例中,我是否可以仅提取数字3以下的数据作为示例
输出:
data=[{"id": "AA11",
"resp": [
{"answer": "A","number": 1},
{"answer": "A","number": 2},
{"answer": "B","number": 3}
]},
{"id": "AA22",
"resp": [
{"answer": "A","number": 1},
{"answer": "A","number": 2},
{"answer": "B","number": 3}
]},
{"id": "AA33",
"resp": [
{"answer": "A","number": 1},
{"answer": "A","number": 2},
{"answer": "B","number": 3}
]}]
试试这个:
new_data = data[0:40]
for item in new_data:
item['resp'] = item['resp'][0:3]
此解决方案将创建一个具有预期值的新词典。python方法将是一种理解:
filtered = [{'id': d['id'], 'resp': [x for x in d['resp'] if x['number'] <= 3]}
for d in data]
过滤到一个特定的元素应该可以这样做
def filter(question,num):
temp = {}
for key in question:
temp[key] = question[key]
temp['resp'] = question['resp'][:num]
return temp
def filter_list(questions,num):
temp = []
for question in questions:
temp.append(filter(question,num))
return temp
data = [{}...]
filtered_data = filter_list(data)
您会注意到,filter
创建了question
的副本,并且只更改了副本。更改数据结构可能很有用,但最好尽可能将数据结构视为不可变的
作为奖励,这样您就不会丢失任何原始数据这是否回答了您的问题?“…复杂比复杂好。扁平比嵌套好。稀疏比密集好。可读性很重要…”-Python之禅
[{'id': 'AA11',
'resp': [{'answer': 'A', 'number': 1},
{'answer': 'A', 'number': 2},
{'answer': 'B', 'number': 3}]},
{'id': 'AA22',
'resp': [{'answer': 'A', 'number': 1},
{'answer': 'A', 'number': 2},
{'answer': 'B', 'number': 3}]},
{'id': 'AA33',
'resp': [{'answer': 'A', 'number': 1},
{'answer': 'A', 'number': 2},
{'answer': 'B', 'number': 3}]}]
def filter(question,num):
temp = {}
for key in question:
temp[key] = question[key]
temp['resp'] = question['resp'][:num]
return temp
def filter_list(questions,num):
temp = []
for question in questions:
temp.append(filter(question,num))
return temp
data = [{}...]
filtered_data = filter_list(data)