我正在尝试根据字符串中存在1的数字将二进制数的二进制字符串组合在一起。
这不起作用:
s = "0 1 3 7 8 9 11 15"
numbers = map(int,s.split())
binaries = [bin(x)[2:].rjust(4,'0') for x in numbers]
one_groups = dict.fromkeys(range(5),[])
for x in binaries:
one_groups[x.count('1')] += [x]
期望的字典one_groups
必须
{0: ['0000'],1: ['0001','1000'],2: ['0011','1001'],3: ['0111','1011'],4: ['1111']}
但是我明白了
{0: ['0000','0001','0011','0111','1000','1001','1011','1111'],1: ['0000',2: ['0000',3: ['0000',4: ['0000','1111']}
到目前为止,唯一有效的方法是使用one_groups[x.count('1')] = one_groups.get(x.count('1')) + [x]
而不是one_groups[x.count('1')] += [x]
但是为什么会这样呢?如果我没记错的话,dict[key]
是否应该返回该字典的值,类似于dict.get(key)
的工作方式?
我已经看到了该线程Why dict.get(key) instead of dict[key]?,但是对于这种特殊情况,它没有回答我的问题,因为我确定该程序并不是要获取KeyError
我也尝试过one_groups[x.count('1')].append(x)
,但这也不起作用。