翻转元组中的数字

时间:2013-12-28 10:54:50

标签: python dictionary binary reverse flip

我有一个按键排序的元组列表,这些元素是二进制数字作为字符串类型。

这就是它现在的样子

('000', 'Jo')
('001', 'Ja')
('010', 'Ji')
('011', 'Je')
('100', 'Ju')
('101', 'Jy')
('110', 'Jl')
('111', 'Jk')

但现在我希望字符串中的字符看起来像

(000, 'jo')
(100, 'ja')
(010, 'ji')
(110, 'je')
(001, 'ju')
(101, 'jy')
(011, 'jl')
(111, 'jk')

但仍然具有相同的价值。

那么,如何翻转元组中的第一个元素以获得输出?

2 个答案:

答案 0 :(得分:2)

您的密钥不是二进制数字,它们是表示二进制数字的字符串。要反转字符串,可以使用slice表示法:

s = s[::-1]

要反转字典中的所有(str)键:

dct = {k[::-1]: v for k, v in dct.items()}

使用int(s, 2)表示法同时计算数值:

dct = {int(k[::-1], 2): v for k, v in dct.items()}

答案 1 :(得分:0)

如果键是二进制数而不是原始问题中的字符串 - 那么就像

mydict = {
    0b1100111: 'Jo'
}

然后他们可以通过这种方式逆转:

dct = {'{0:b}'.format(k)[::-1]: v for k, v in mydict.items()}

但是新键将是字符串(这可以让你观察反转的位)。如果您希望它们保留数字,您可以将它们转换回整数:

dct = {int('{0:b}'.format(k)[::-1], 2): v for k, v in mydict.items()}

(假设您正在使用python 2.6 +)