私binary_list
のは、「000」、「001」、「010」、....の文字列のリストです。
各ビット列の 1 の数を辞書に追加しようとしています。辞書はn
、文字列に現れる 1 の数ごとに のサイズで作成されます
ビットの文字列をリストに追加してから辞書に追加することはできないようです。コードを実行すると、次のようになります。
input: sortbits(3)
000
001
010
011
100
101
110
111
{0: [], 1: [], 2: []}
正しい出力は次のとおりです。
000
001
010
011
100
101
110
111
{0: [000], 1: [001, 010, 100], 2: [011,101, 110], 3: [111]}
私のコード:
def sortbit(n):
max_num = 2**n
binary_list = []
for x in range(0,max_num):
stringy = []
for a in range(n):
stringy.append(str(x%2))
x //= 2
print ''.join(reversed(stringy))
stringy_list = ''.join(reversed(stringy))
binary_list.append(stringy_list)
count_dict = dict.fromkeys(range(0,n+1))
for element in binary_list:
count = 0
value_list = []
for character in element:
if character == '1':
count += 1
for y in count_dict:
if y == str(count):
value_list.append(element)
count_dict[y] = value_list
print count_dict