我想从字典列表中创建一本新字典。
要求的产出是,请建议:
data2 = {'NUM': [ID], 'NUM': [ID]}
data2 = {'13': [16,4], '131': [12, 11], '132': [9,8]}我尝试了Python代码如下:
data = [{'object': 'XXXX-TSS/RDID-1579/NBLO-723/NUM-13/ID-16'},
{'object': 'XXXX-TSS/RDID-1579/NBLO-723/NUM-131/ID-12'},
{'object': 'XXXX-TSS/RDID-1579/NBLO-723/NUM-132/ID-9'},
{'object':'XXXX-TSS/RDID-1579/NBLO-723/NUM-13/ID-4'},
{'object': 'XXXX-TSS/RDID-1579/NBLO-723/NUM-131/ID-11'},
{'object': 'XXXX-TSS/RDID-1579/NBLO-723/NUM-132/ID-8'}]
data2 = {}
for row in data:
obj = row['object']
num = obj.split('/')[3].split('-')[-1]
_id = int(obj.split('-')[-1])
if num not in data2:
data2[data2] = _id这给我的结果是:{'13': 16, '131': 12, '132': 9}
发布于 2022-08-22 11:50:22
您可以使用一个简单的regexp来获得请求的输出:
data = [
{'object': 'XXXX-TSS/RDID-1579/NBLO-723/NUM-13/ID-16'},
{'object': 'XXXX-TSS/RDID-1579/NBLO-723/NUM-131/ID-12'},
{'object': 'XXXX-TSS/RDID-1579/NBLO-723/NUM-132/ID-9'},
{'object': 'XXXX-TSS/RDID-1579/NBLO-723/NUM-13/ID-4'},
{'object': 'XXXX-TSS/RDID-1579/NBLO-723/NUM-131/ID-11'},
{'object': 'XXXX-TSS/RDID-1579/NBLO-723/NUM-132/ID-8'}
]
result = {}
pattern = re.compile(r'NUM-(\d+)/ID-(\d+)')
for adict in data:
num, id = re.findall(pattern, adict['object'])[0]
result.setdefault(num, []).append(int(id))
print(result)输出:
{'13': [16, 4], '131': [12, 11], '132': [9, 8]}https://stackoverflow.com/questions/73441227
复制相似问题