我有一个由key:[list]组成的字典,其中的列表是固定且偶数个二进制值,即:

{'a':[0,1,1,0,0,1],'b':[1,1,1,0,0,0]}


对于每个键,我需要为原始字典中的每对值返回一个新值,以便对于pair(1,1)= 3,pair(0,1)= 2,pair(1,0)= 1 ,对(0,0)= 0。

对于上面的示例,输出为:

{'a':[2,1,2],'b':[3,1,0]}


python和程序设计的新手,并且在SO上找不到我要找的东西。建议表示赞赏。

最佳答案

第一次攻击只是配对部分:

def paired(binlist, map={(1, 1): 3, (0, 1): 2, (1, 0): 1, (0, 0): 0}):
    return [map[tuple(binlist[i:i + 2])] for i in range(0, len(binlist), 2)]


然后将其应用于您的字典:

{k: paired(v) for k, v in input_dictionary.iteritems()}


演示:

>>> paired([0,1,1,0,0,1])
[2, 1, 2]
>>> paired([1,1,1,0,0,0])
[3, 1, 0]
>>> input_dictionary = {'a':[0,1,1,0,0,1],'b':[1,1,1,0,0,0]}
>>> {k: paired(v) for k, v in input_dictionary.iteritems()}
{'a': [2, 1, 2], 'b': [3, 1, 0]}

10-06 00:26