如何创建一个字典来解析另一个字典?

时间:2018-11-04 18:14:34

标签: python

我正在尝试解析列表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']}

1 个答案:

答案 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

相关问题