Ben dize kaç tane var 1 dayalı belirli sayıların ikili dizeleri birlikte gruplandırmaya çalışıyorum.
Bu işe yaramaz:
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]
Beklenen Sözlük one_groups
ihtiyaçlar olmak
{0: ['0000'],
1: ['0001', '1000'],
2: ['0011', '1001'],
3: ['0111', '1011'],
4: ['1111']}
Ama anladım
{0: ['0000', '0001', '0011', '0111', '1000', '1001', '1011', '1111'],
1: ['0000', '0001', '0011', '0111', '1000', '1001', '1011', '1111'],
2: ['0000', '0001', '0011', '0111', '1000', '1001', '1011', '1111'],
3: ['0000', '0001', '0011', '0111', '1000', '1001', '1011', '1111'],
4: ['0000', '0001', '0011', '0111', '1000', '1001', '1011', '1111']}
Şimdiye kadar işe yarayan tek şey kullanmak one_groups[x.count('1')] = one_groups.get(x.count('1')) + [x]
yerineone_groups[x.count('1')] += [x]
Ama neden böyle? Doğru hatırlıyorsam, dict[key]
nasıl dict.get(key)
çalıştığına benzer şekilde, sözlüğün değerini döndürmem gerekiyor mu? Bu konuyu gördüm Neden dict [key] yerine dict.get (anahtar)? ama bu özel durum için soruma cevap vermedi, çünkü programınKeyError
Ben de denedim one_groups[x.count('1')].append(x)
ama bu da çalışmıyor.
bin(x)[2:].rjust(4, '0')
basitleştirilebilir '{:0>4b}'.format(x)
.
binaries
soru ile ilgili değildir, bu yüzden sadece değerini sağlayabilirsiniz.
get
None
anahtar yoksa veya sağlanan herhangi bir varsayılan değer döndürülürken , dizin operatörü[]
anahtar yoksa bir hata oluşturur.