我试图通过将列表索引作为其键来转换 dict in dict 内的所有列表。
示例输入:
{
"checksum": "c540fcd985bf88c87e48c2bfa1df5498",
"data": {
"sampleMetrics": {
"name": "DNA Library QC Metrics",
"passQualityControl": true,
"metrics": [{
"name": "CONTAMINATION_SCORE",
"value": 1302,
"LSL": 0,
"USL": 3106,
"UOM": "NA"
}]
}
}
}
预期输出:
{
"checksum": "c540fcd985bf88c87e48c2bfa1df5498",
"data": {
"sampleMetrics": {
"name": "DNA Library QC Metrics",
"passQualityControl": true,
"metrics": {
"0": {
"name": "CONTAMINATION_SCORE"
},
"1": {
"value": 1302
},
"2": {
"LSL": 0
},
"3": {
"USL": 3106
},
"4": {
"UOM": "NA"
}
}
}
}
}
试用:
def list_to_dict_by_index(lst):
print {str(k): str(v) for k, v in enumerate(lst)}
list_to_dict_by_index([ {"d1" : 1}, {"d2" : 2} ])
但这适用于简单列表。 如何对 dict 中的所有列表执行相同的操作?
(无论列表在字典中的哪个位置。)
列表可能包含另一个列表:
例如: 示例输入2:
"metrics": [{
"name": ["CONTAMINATION_SCORE", "TOTAL_SCORE"],
"value": 1302,
"LSL": 0,
"USL": 3106,
"UOM": "NA"
}]
示例输出2:
"metrics" : {
"0": {
"name": {
"0": "CONTAMINATION_SCORE",
"1": "TOTAL_SCORE"
}
},
"1": {
"value": 1302
},
"2": {
"LSL": 0
},
"3": {
"USL": 3106
},
"4": {
"UOM": "NA"
}
}
最佳答案
dic = {
"checksum": "c540fcd985bf88c87e48c2bfa1df5498",
"data": {
"sampleMetrics": {
"name": "DNA Library QC Metrics",
"passQualityControl": True,
"metrics": [{
"name": "CONTAMINATION_SCORE",
"value": 1302,
"LSL": 0,
"USL": 3106,
"UOM": "NA"
}]
}
}
}
dic2 = dic['data']['sampleMetrics']['metrics']
dic3 ={}
for i in dic2:
for index, j in enumerate(i,0):
dic3[index]={j:i[j]}
dic['data']['sampleMetrics']['metrics'] = dic3
print(dic)
"""
output
{
'checksum': 'c540fcd985bf88c87e48c2bfa1df5498',
'data': {
'sampleMetrics': {
'name': 'DNA Library QC Metrics',
'passQualityControl': True,
'metrics': {
0: {
'name': 'CONTAMINATION_SCORE'
},
1: {
'value': 1302
},
2: {
'LSL': 0
},
3: {
'USL': 3106
},
4: {
'UOM': 'NA'
}
}
}
}
}
"""
关于python - 通过将列表索引视为python中的键,将dict中的所有列表转换为dict,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55274607/