我正在尝试解析列表k
并使用字典k_dict
中列表k的相应值来创建另一个字典firmware_versions_for_all_chip_revs_dict
,我具有当前输出和预期输出要了解用例?我要去哪里错了,如何解决?
k = ['C-4350__s-C5','C-4345__s-B1','C-4350__s-C2','C-43452__s-A3','C-4355__s-C0','C-4355__s-C1','C-4355__s-B3']
count = 0
firmware_versions_for_all_chip_revs_dict = {}
k_dict = {'C-4350__s-C5':True,'C-4345__s-B1':True,'C-4350__s-C2':False,'C-43452__s-A3':True,'C-4355__s-C0':False,'C-4355__s-C1':True,'C-4355__s-B3':True}
for value in k:
print value
chip = re.search(r'([0-9]+)',value,flags=re.IGNORECASE).group()
all_trx_versions_same = k_dict[value]
if count == 0:
originalchip = chip
if chip.strip() == originalchip.strip():
print 'Inside chip equal to'
#all_trx_versions_list.append(all_trx_versions_same)
try:
firmware_versions_for_all_chip_revs_dict[originalchip].append(all_trx_versions_same)
count += 1
except:
firmware_versions_for_all_chip_revs_dict[originalchip] = all_trx_versions_same
originalchip = chip
count += 1
elif chip.strip() != originalchip.strip():
print 'Inside chip not equal to '
#firmware_versions_for_all_chip_revs_dict[originalchip] = all_trx_versions_list
#all_trx_versions_list = []
originalchip = chip
count +=1
print firmware_versions_for_all_chip_revs_dict
当前输出:-
{'4355': True, '4350': True}
预期的输出:-
{'4355': '[False,True,True]','4350': '[True,False]','4345':'[True]','43452',['True']}
答案 0 :(得分:0)
这可能会帮助您:
k = ['C-4350__s-C5','C-4345__s-B1','C-4350__s-C2','C-43452__s-A3','C-4355__s-C0','C-4355__s-C1','C-4355__s-B3']
k_dict = {'C-4350__s-C5':True,'C-4345__s-B1':True,'C-4350__s-C2':False,'C-43452__s-A3':True,'C-4355__s-C0':False,'C-4355__s-C1':True,'C-4355__s-B3':True}
numbers = sorted(set([elem.split('-')[1].split('_')[0] for elem in k]))
output = dict([(elem, []) for elem in numbers])
for elem in output.keys():
for key in k_dict.keys():
if elem in key:
output[elem].append(k_dict[key])
print(output)
输出:
{'4345': [True, True], '43452': [True], '4350': [True, False], '4355': [False, True, True]}
只需将output
变量的名称替换为firmware_versions_for_all_chip_revs_dict
。