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

2024-04-29 07:23:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图解析列表k,并使用字典中列表k的相应值k_dict来创建另一个字典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']}

Tags: falsetrueforvaluecountallversionsdict
1条回答
网友
1楼 · 发布于 2024-04-29 07:23:25

这可能会帮助您:

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。你知道吗

相关问题 更多 >