相同的元组给出不同的泡菜

2024-02-27

这种情况很奇怪,我希望有一些关于 pickle 模块的东西我不知道。

我有两个元组s1 and s2。如果我比较它们它会返回True.

s1 == s2
True

如果我腌制它们并比较结果,它会返回False

pickle.dumps(s1) == pickle.dumps(s2)
False

让我们看看这些字节字符串。他们确实不同:

pk1 = pickle.dumps(s1)
pk2 = pickle.dumps(s2)

print(pk1)
b'\x80\x03((X!\x00\x00\x00AA1A2A5D4D4D4D4H2H2H3N0N0P4P4a2a3q\x00X!\x00\x00\x00AA1A3A5D3D4D4D4H1H2H3N0N1P3P4a2a3q\x01K\x01\x86q\x02X!\x00\x00\x00AA2A3A4D2D3D3D3H0H2H2N2N2P3P3a0a2q\x03K\x02\x86q\x04X!\x00\x00\x00AA4A5A5D1D2D2D3H2H4H4N5N5P2P2a2a4q\x05K\x05\x86q\x06X!\x00\x00\x00DA1A3A4A4D2D2D2H1H2H3N4N4P2P2a1a3q\x07K\x04\x86q\x08X!\x00\x00\x00DA2A3A3A4D1D1D2H1H2H3N3N4P0P0a1a3q\tK\x04\x86q\nX!\x00\x00\x00DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3q\x0bK\x04\x86q\x0cX!\x00\x00\x00DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3q\rK\x04\x86q\x0eX!\x00\x00\x00HA0A2A2A4D3D3D3D3H2H2N2N2P3P3a0a2q\x0fK\x02\x86q\x10X!\x00\x00\x00HA1A2A2A4D2D2D3D3H1H2N1N2P2P2a1a2q\x11K\x02\x86q\x12X!\x00\x00\x00HA2A2A3A3D1D1D2D2H1H2N3N3P1P2a0a2q\x13K\x03\x86q\x14X!\x00\x00\x00NA0A0A2A5D3D4D4D4H1H2H3N0P3P4a2a3q\x15K\x00\x86q\x16X!\x00\x00\x00NA0A1A2A5D4D4D4D4H2H2H3N0P4P4a2a3q\x17K\x00\x86q\x18X!\x00\x00\x00PA2A3A3A4D0D1D1D2H1H2H3N3N4P0a1a3q\x19K\x04\x86q\x1aX!\x00\x00\x00PA2A3A4A4D0D0D0D2H2H2H3N4N4P0a2a3q\x1bK\x04\x86q\x1cX!\x00\x00\x00aA0A2A2A4D3D3D3D3H0H2H2N2N2P3P3a2q\x1dK\x02\x86q\x1eX!\x00\x00\x00aA2A2A3A3D1D1D2D2H0H1H2N3N3P1P2a2q\x1fK\x03\x86q tq!(h\x01h\x00K\x01\x86q"h\x03K\x03\x86q#h\x05K\x05\x86q$h\x07K\x04\x86q%h\tK\x03\x86q&h\x0bK\x04\x86q\'h\rK\x04\x86q(h\x0fK\x02\x86q)h\x11K\x01\x86q*h\x13K\x03\x86q+h\x15K\x00\x86q,h\x17K\x01\x86q-h\x19K\x03\x86q.h\x1bK\x04\x86q/h\x1dK\x02\x86q0h\x1fK\x03\x86q1tq2(h\x03h\x00K\x02\x86q3h\x01K\x03\x86q4h\x05K\x04\x86q5h\x07K\x03\x86q6h\tK\x03\x86q7h\x0bK\x02\x86q8h\rK\x03\x86q9h\x0fK\x00\x86q:h\x11K\x02\x86q;h\x13K\x02\x86q<h\x15K\x02\x86q=h\x17K\x02\x86q>h\x19K\x03\x86q?h\x1bK\x03\x86q@h\x1dK\x00\x86qAh\x1fK\x02\x86qBtqC(h\x05h\x00K\x05\x86qDh\x01K\x05\x86qEh\x03K\x04\x86qFh\x07K\x01\x86qGh\tK\x02\x86qHh\rK\x02\x86qIh\x0bK\x03\x86qJh\x0fK\x04\x86qKh\x11K\x04\x86qLh\x13K\x02\x86qMh\x15K\x05\x86qNh\x17K\x05\x86qOh\x19K\x02\x86qPh\x1bK\x02\x86qQh\x1dK\x04\x86qRh\x1fK\x02\x86qStqT(h\x07h\x00K\x04\x86qUh\x01K\x04\x86qVh\x03K\x03\x86qWh\x05K\x01\x86qXh\tK\x02\x86qYh\x0bK\x02\x86qZh\rK\x02\x86q[h\x0fK\x03\x86q\\h\x11K\x02\x86q]h\x13K\x01\x86q^h\x15K\x04\x86q_h\x17K\x04\x86q`h\x19K\x02\x86qah\x1bK\x02\x86qbh\x1dK\x03\x86qch\x1fK\x01\x86qdtqe(h\th\x00K\x04\x86qfh\x01K\x03\x86qgh\x03K\x03\x86qhh\x05K\x02\x86qih\x07K\x02\x86qjh\x0bK\x01\x86qkh\rK\x01\x86qlh\x0fK\x03\x86qmh\x11K\x02\x86qnh\x13K\x01\x86qoh\x15K\x03\x86qph\x17K\x04\x86qqh\x19K\x00\x86qrh\x1bK\x00\x86qsh\x1dK\x03\x86qth\x1fK\x01\x86qutqv(h\x0bh\x00K\x04\x86qwh\x01K\x04\x86qxh\x03K\x02\x86qyh\x05K\x03\x86qzh\x07K\x02\x86q{h\tK\x01\x86q|h\rK\x01\x86q}h\x0fK\x03\x86q~h\x11K\x03\x86q\x7fh\x13K\x02\x86q\x80h\x15K\x04\x86q\x81h\x17K\x04\x86q\x82h\x19K\x01\x86q\x83h\x1bK\x00\x86q\x84h\x1dK\x03\x86q\x85h\x1fK\x02\x86q\x86tq\x87(h\rh\x00K\x04\x86q\x88h\x01K\x04\x86q\x89h\x03K\x03\x86q\x8ah\x05K\x02\x86q\x8bh\x07K\x02\x86q\x8ch\tK\x01\x86q\x8dh\x0bK\x01\x86q\x8eh\x0fK\x03\x86q\x8fh\x11K\x03\x86q\x90h\x13K\x02\x86q\x91h\x15K\x04\x86q\x92h\x17K\x04\x86q\x93h\x19K\x01\x86q\x94h\x1bK\x00\x86q\x95h\x1dK\x03\x86q\x96h\x1fK\x02\x86q\x97tq\x98(h\x0fh\x00K\x02\x86q\x99h\x01K\x02\x86q\x9ah\x03K\x00\x86q\x9bh\x05K\x04\x86q\x9ch\x07K\x03\x86q\x9dh\tK\x03\x86q\x9eh\x0bK\x03\x86q\x9fh\rK\x03\x86q\xa0h\x11K\x02\x86q\xa1h\x13K\x02\x86q\xa2h\x15K\x02\x86q\xa3h\x17K\x02\x86q\xa4h\x19K\x03\x86q\xa5h\x1bK\x03\x86q\xa6h\x1dK\x00\x86q\xa7h\x1fK\x02\x86q\xa8tq\xa9(h\x11h\x00K\x02\x86q\xaah\x01K\x01\x86q\xabh\x03K\x02\x86q\xach\x05K\x04\x86q\xadh\x07K\x02\x86q\xaeh\tK\x02\x86q\xafh\x0bK\x03\x86q\xb0h\rK\x03\x86q\xb1h\x0fK\x02\x86q\xb2h\x13K\x01\x86q\xb3h\x15K\x01\x86q\xb4h\x17K\x02\x86q\xb5h\x19K\x02\x86q\xb6h\x1bK\x02\x86q\xb7h\x1dK\x02\x86q\xb8h\x1fK\x01\x86q\xb9tq\xba(h\x13h\x00K\x03\x86q\xbbh\x01K\x03\x86q\xbch\x03K\x02\x86q\xbdh\x05K\x02\x86q\xbeh\x07K\x01\x86q\xbfh\tK\x01\x86q\xc0h\x0bK\x02\x86q\xc1h\rK\x02\x86q\xc2h\x0fK\x02\x86q\xc3h\x11K\x01\x86q\xc4h\x15K\x03\x86q\xc5h\x17K\x03\x86q\xc6h\x19K\x01\x86q\xc7h\x1bK\x02\x86q\xc8h\x1dK\x02\x86q\xc9h\x1fK\x00\x86q\xcatq\xcb(h\x15h\x00K\x00\x86q\xcch\x01K\x00\x86q\xcdh\x03K\x02\x86q\xceh\x05K\x05\x86q\xcfh\x07K\x04\x86q\xd0h\tK\x03\x86q\xd1h\x0bK\x04\x86q\xd2h\rK\x04\x86q\xd3h\x0fK\x02\x86q\xd4h\x11K\x01\x86q\xd5h\x13K\x03\x86q\xd6h\x17K\x00\x86q\xd7h\x19K\x03\x86q\xd8h\x1bK\x04\x86q\xd9h\x1dK\x02\x86q\xdah\x1fK\x03\x86q\xdbtq\xdc(h\x17h\x00K\x00\x86q\xddh\x01K\x01\x86q\xdeh\x03K\x02\x86q\xdfh\x05K\x05\x86q\xe0h\x07K\x04\x86q\xe1h\tK\x04\x86q\xe2h\x0bK\x04\x86q\xe3h\rK\x04\x86q\xe4h\x0fK\x02\x86q\xe5h\x11K\x02\x86q\xe6h\x13K\x03\x86q\xe7h\x15K\x00\x86q\xe8h\x19K\x04\x86q\xe9h\x1bK\x04\x86q\xeah\x1dK\x02\x86q\xebh\x1fK\x03\x86q\xectq\xed(h\x19h\x00K\x04\x86q\xeeh\x01K\x03\x86q\xefh\x03K\x03\x86q\xf0h\x05K\x02\x86q\xf1h\x07K\x02\x86q\xf2h\tK\x00\x86q\xf3h\x0bK\x01\x86q\xf4h\rK\x01\x86q\xf5h\x0fK\x03\x86q\xf6h\x11K\x02\x86q\xf7h\x13K\x01\x86q\xf8h\x15K\x03\x86q\xf9h\x17K\x04\x86q\xfah\x1bK\x00\x86q\xfbh\x1dK\x03\x86q\xfch\x1fK\x01\x86q\xfdtq\xfe(h\x1bh\x00K\x04\x86q\xffh\x01K\x04\x86r\x00\x01\x00\x00h\x03K\x03\x86r\x01\x01\x00\x00h\x05K\x02\x86r\x02\x01\x00\x00h\x07K\x02\x86r\x03\x01\x00\x00h\tK\x00\x86r\x04\x01\x00\x00h\x0bK\x00\x86r\x05\x01\x00\x00h\rK\x00\x86r\x06\x01\x00\x00h\x0fK\x03\x86r\x07\x01\x00\x00h\x11K\x02\x86r\x08\x01\x00\x00h\x13K\x02\x86r\t\x01\x00\x00h\x15K\x04\x86r\n\x01\x00\x00h\x17K\x04\x86r\x0b\x01\x00\x00h\x19K\x00\x86r\x0c\x01\x00\x00h\x1dK\x03\x86r\r\x01\x00\x00h\x1fK\x02\x86r\x0e\x01\x00\x00tr\x0f\x01\x00\x00(h\x1dh\x00K\x02\x86r\x10\x01\x00\x00h\x01K\x02\x86r\x11\x01\x00\x00h\x03K\x00\x86r\x12\x01\x00\x00h\x05K\x04\x86r\x13\x01\x00\x00h\x07K\x03\x86r\x14\x01\x00\x00h\tK\x03\x86r\x15\x01\x00\x00h\x0bK\x03\x86r\x16\x01\x00\x00h\rK\x03\x86r\x17\x01\x00\x00h\x0fK\x00\x86r\x18\x01\x00\x00h\x11K\x02\x86r\x19\x01\x00\x00h\x13K\x02\x86r\x1a\x01\x00\x00h\x15K\x02\x86r\x1b\x01\x00\x00h\x17K\x02\x86r\x1c\x01\x00\x00h\x19K\x03\x86r\x1d\x01\x00\x00h\x1bK\x03\x86r\x1e\x01\x00\x00h\x1fK\x02\x86r\x1f\x01\x00\x00tr \x01\x00\x00(h\x1fh\x00K\x03\x86r!\x01\x00\x00h\x01K\x03\x86r"\x01\x00\x00h\x03K\x02\x86r#\x01\x00\x00h\x05K\x02\x86r$\x01\x00\x00h\x07K\x01\x86r%\x01\x00\x00h\tK\x01\x86r&\x01\x00\x00h\x0bK\x02\x86r\'\x01\x00\x00h\rK\x02\x86r(\x01\x00\x00h\x0fK\x02\x86r)\x01\x00\x00h\x11K\x01\x86r*\x01\x00\x00h\x13K\x00\x86r+\x01\x00\x00h\x15K\x03\x86r,\x01\x00\x00h\x17K\x03\x86r-\x01\x00\x00h\x19K\x01\x86r.\x01\x00\x00h\x1bK\x02\x86r/\x01\x00\x00h\x1dK\x02\x86r0\x01\x00\x00tr1\x01\x00\x00tr2\x01\x00\x00.'

print(pk2)
b'\x80\x03((X!\x00\x00\x00AA1A2A5D4D4D4D4H2H2H3N0N0P4P4a2a3q\x00X!\x00\x00\x00AA1A3A5D3D4D4D4H1H2H3N0N1P3P4a2a3q\x01K\x01\x86q\x02X!\x00\x00\x00AA2A3A4D2D3D3D3H0H2H2N2N2P3P3a0a2q\x03K\x02\x86q\x04X!\x00\x00\x00AA4A5A5D1D2D2D3H2H4H4N5N5P2P2a2a4q\x05K\x05\x86q\x06X!\x00\x00\x00DA1A3A4A4D2D2D2H1H2H3N4N4P2P2a1a3q\x07K\x04\x86q\x08X!\x00\x00\x00DA2A3A3A4D1D1D2H1H2H3N3N4P0P0a1a3q\tK\x04\x86q\nX!\x00\x00\x00DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3q\x0bK\x04\x86q\x0cX!\x00\x00\x00DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3q\rK\x04\x86q\x0eX!\x00\x00\x00HA0A2A2A4D3D3D3D3H2H2N2N2P3P3a0a2q\x0fK\x02\x86q\x10X!\x00\x00\x00HA1A2A2A4D2D2D3D3H1H2N1N2P2P2a1a2q\x11K\x02\x86q\x12X!\x00\x00\x00HA2A2A3A3D1D1D2D2H1H2N3N3P1P2a0a2q\x13K\x03\x86q\x14X!\x00\x00\x00NA0A0A2A5D3D4D4D4H1H2H3N0P3P4a2a3q\x15K\x00\x86q\x16X!\x00\x00\x00NA0A1A2A5D4D4D4D4H2H2H3N0P4P4a2a3q\x17K\x00\x86q\x18X!\x00\x00\x00PA2A3A3A4D0D1D1D2H1H2H3N3N4P0a1a3q\x19K\x04\x86q\x1aX!\x00\x00\x00PA2A3A4A4D0D0D0D2H2H2H3N4N4P0a2a3q\x1bK\x04\x86q\x1cX!\x00\x00\x00aA0A2A2A4D3D3D3D3H0H2H2N2N2P3P3a2q\x1dK\x02\x86q\x1eX!\x00\x00\x00aA2A2A3A3D1D1D2D2H0H1H2N3N3P1P2a2q\x1fK\x03\x86q tq!(h\x01h\x00K\x01\x86q"h\x03K\x03\x86q#h\x05K\x05\x86q$h\x07K\x04\x86q%h\tK\x03\x86q&h\x0bK\x04\x86q\'h\rK\x04\x86q(h\x0fK\x02\x86q)h\x11K\x01\x86q*h\x13K\x03\x86q+h\x15K\x00\x86q,h\x17K\x01\x86q-h\x19K\x03\x86q.h\x1bK\x04\x86q/h\x1dK\x02\x86q0h\x1fK\x03\x86q1tq2(h\x03h\x00K\x02\x86q3h\x01K\x03\x86q4h\x05K\x04\x86q5h\x07K\x03\x86q6h\tK\x03\x86q7h\rK\x02\x86q8h\x0bK\x03\x86q9h\x0fK\x00\x86q:h\x11K\x02\x86q;h\x13K\x02\x86q<h\x15K\x02\x86q=h\x17K\x02\x86q>h\x19K\x03\x86q?h\x1bK\x03\x86q@h\x1dK\x00\x86qAh\x1fK\x02\x86qBtqC(h\x05h\x00K\x05\x86qDh\x01K\x05\x86qEh\x03K\x04\x86qFh\x07K\x01\x86qGh\tK\x02\x86qHh\x0bK\x02\x86qIh\rK\x03\x86qJh\x0fK\x04\x86qKh\x11K\x04\x86qLh\x13K\x02\x86qMh\x15K\x05\x86qNh\x17K\x05\x86qOh\x19K\x02\x86qPh\x1bK\x02\x86qQh\x1dK\x04\x86qRh\x1fK\x02\x86qStqT(h\x07h\x00K\x04\x86qUh\x01K\x04\x86qVh\x03K\x03\x86qWh\x05K\x01\x86qXh\tK\x02\x86qYh\x0bK\x02\x86qZh\rK\x02\x86q[h\x0fK\x03\x86q\\h\x11K\x02\x86q]h\x13K\x01\x86q^h\x15K\x04\x86q_h\x17K\x04\x86q`h\x19K\x02\x86qah\x1bK\x02\x86qbh\x1dK\x03\x86qch\x1fK\x01\x86qdtqe(h\th\x00K\x04\x86qfh\x01K\x03\x86qgh\x03K\x03\x86qhh\x05K\x02\x86qih\x07K\x02\x86qjh\x0bK\x01\x86qkh\rK\x01\x86qlh\x0fK\x03\x86qmh\x11K\x02\x86qnh\x13K\x01\x86qoh\x15K\x03\x86qph\x17K\x04\x86qqh\x19K\x00\x86qrh\x1bK\x00\x86qsh\x1dK\x03\x86qth\x1fK\x01\x86qutqv(h\rh\x00K\x04\x86qwh\x01K\x04\x86qxh\x03K\x02\x86qyh\x05K\x03\x86qzh\x07K\x02\x86q{h\tK\x01\x86q|h\x0bK\x01\x86q}h\x0fK\x03\x86q~h\x11K\x03\x86q\x7fh\x13K\x02\x86q\x80h\x15K\x04\x86q\x81h\x17K\x04\x86q\x82h\x19K\x01\x86q\x83h\x1bK\x00\x86q\x84h\x1dK\x03\x86q\x85h\x1fK\x02\x86q\x86tq\x87(h\x0bh\x00K\x04\x86q\x88h\x01K\x04\x86q\x89h\x03K\x03\x86q\x8ah\x05K\x02\x86q\x8bh\x07K\x02\x86q\x8ch\tK\x01\x86q\x8dh\rK\x01\x86q\x8eh\x0fK\x03\x86q\x8fh\x11K\x03\x86q\x90h\x13K\x02\x86q\x91h\x15K\x04\x86q\x92h\x17K\x04\x86q\x93h\x19K\x01\x86q\x94h\x1bK\x00\x86q\x95h\x1dK\x03\x86q\x96h\x1fK\x02\x86q\x97tq\x98(h\x0fh\x00K\x02\x86q\x99h\x01K\x02\x86q\x9ah\x03K\x00\x86q\x9bh\x05K\x04\x86q\x9ch\x07K\x03\x86q\x9dh\tK\x03\x86q\x9eh\x0bK\x03\x86q\x9fh\rK\x03\x86q\xa0h\x11K\x02\x86q\xa1h\x13K\x02\x86q\xa2h\x15K\x02\x86q\xa3h\x17K\x02\x86q\xa4h\x19K\x03\x86q\xa5h\x1bK\x03\x86q\xa6h\x1dK\x00\x86q\xa7h\x1fK\x02\x86q\xa8tq\xa9(h\x11h\x00K\x02\x86q\xaah\x01K\x01\x86q\xabh\x03K\x02\x86q\xach\x05K\x04\x86q\xadh\x07K\x02\x86q\xaeh\tK\x02\x86q\xafh\x0bK\x03\x86q\xb0h\rK\x03\x86q\xb1h\x0fK\x02\x86q\xb2h\x13K\x01\x86q\xb3h\x15K\x01\x86q\xb4h\x17K\x02\x86q\xb5h\x19K\x02\x86q\xb6h\x1bK\x02\x86q\xb7h\x1dK\x02\x86q\xb8h\x1fK\x01\x86q\xb9tq\xba(h\x13h\x00K\x03\x86q\xbbh\x01K\x03\x86q\xbch\x03K\x02\x86q\xbdh\x05K\x02\x86q\xbeh\x07K\x01\x86q\xbfh\tK\x01\x86q\xc0h\x0bK\x02\x86q\xc1h\rK\x02\x86q\xc2h\x0fK\x02\x86q\xc3h\x11K\x01\x86q\xc4h\x15K\x03\x86q\xc5h\x17K\x03\x86q\xc6h\x19K\x01\x86q\xc7h\x1bK\x02\x86q\xc8h\x1dK\x02\x86q\xc9h\x1fK\x00\x86q\xcatq\xcb(h\x15h\x00K\x00\x86q\xcch\x01K\x00\x86q\xcdh\x03K\x02\x86q\xceh\x05K\x05\x86q\xcfh\x07K\x04\x86q\xd0h\tK\x03\x86q\xd1h\x0bK\x04\x86q\xd2h\rK\x04\x86q\xd3h\x0fK\x02\x86q\xd4h\x11K\x01\x86q\xd5h\x13K\x03\x86q\xd6h\x17K\x00\x86q\xd7h\x19K\x03\x86q\xd8h\x1bK\x04\x86q\xd9h\x1dK\x02\x86q\xdah\x1fK\x03\x86q\xdbtq\xdc(h\x17h\x00K\x00\x86q\xddh\x01K\x01\x86q\xdeh\x03K\x02\x86q\xdfh\x05K\x05\x86q\xe0h\x07K\x04\x86q\xe1h\tK\x04\x86q\xe2h\x0bK\x04\x86q\xe3h\rK\x04\x86q\xe4h\x0fK\x02\x86q\xe5h\x11K\x02\x86q\xe6h\x13K\x03\x86q\xe7h\x15K\x00\x86q\xe8h\x19K\x04\x86q\xe9h\x1bK\x04\x86q\xeah\x1dK\x02\x86q\xebh\x1fK\x03\x86q\xectq\xed(h\x19h\x00K\x04\x86q\xeeh\x01K\x03\x86q\xefh\x03K\x03\x86q\xf0h\x05K\x02\x86q\xf1h\x07K\x02\x86q\xf2h\tK\x00\x86q\xf3h\x0bK\x01\x86q\xf4h\rK\x01\x86q\xf5h\x0fK\x03\x86q\xf6h\x11K\x02\x86q\xf7h\x13K\x01\x86q\xf8h\x15K\x03\x86q\xf9h\x17K\x04\x86q\xfah\x1bK\x00\x86q\xfbh\x1dK\x03\x86q\xfch\x1fK\x01\x86q\xfdtq\xfe(h\x1bh\x00K\x04\x86q\xffh\x01K\x04\x86r\x00\x01\x00\x00h\x03K\x03\x86r\x01\x01\x00\x00h\x05K\x02\x86r\x02\x01\x00\x00h\x07K\x02\x86r\x03\x01\x00\x00h\tK\x00\x86r\x04\x01\x00\x00h\x0bK\x00\x86r\x05\x01\x00\x00h\rK\x00\x86r\x06\x01\x00\x00h\x0fK\x03\x86r\x07\x01\x00\x00h\x11K\x02\x86r\x08\x01\x00\x00h\x13K\x02\x86r\t\x01\x00\x00h\x15K\x04\x86r\n\x01\x00\x00h\x17K\x04\x86r\x0b\x01\x00\x00h\x19K\x00\x86r\x0c\x01\x00\x00h\x1dK\x03\x86r\r\x01\x00\x00h\x1fK\x02\x86r\x0e\x01\x00\x00tr\x0f\x01\x00\x00(h\x1dh\x00K\x02\x86r\x10\x01\x00\x00h\x01K\x02\x86r\x11\x01\x00\x00h\x03K\x00\x86r\x12\x01\x00\x00h\x05K\x04\x86r\x13\x01\x00\x00h\x07K\x03\x86r\x14\x01\x00\x00h\tK\x03\x86r\x15\x01\x00\x00h\x0bK\x03\x86r\x16\x01\x00\x00h\rK\x03\x86r\x17\x01\x00\x00h\x0fK\x00\x86r\x18\x01\x00\x00h\x11K\x02\x86r\x19\x01\x00\x00h\x13K\x02\x86r\x1a\x01\x00\x00h\x15K\x02\x86r\x1b\x01\x00\x00h\x17K\x02\x86r\x1c\x01\x00\x00h\x19K\x03\x86r\x1d\x01\x00\x00h\x1bK\x03\x86r\x1e\x01\x00\x00h\x1fK\x02\x86r\x1f\x01\x00\x00tr \x01\x00\x00(h\x1fh\x00K\x03\x86r!\x01\x00\x00h\x01K\x03\x86r"\x01\x00\x00h\x03K\x02\x86r#\x01\x00\x00h\x05K\x02\x86r$\x01\x00\x00h\x07K\x01\x86r%\x01\x00\x00h\tK\x01\x86r&\x01\x00\x00h\x0bK\x02\x86r\'\x01\x00\x00h\rK\x02\x86r(\x01\x00\x00h\x0fK\x02\x86r)\x01\x00\x00h\x11K\x01\x86r*\x01\x00\x00h\x13K\x00\x86r+\x01\x00\x00h\x15K\x03\x86r,\x01\x00\x00h\x17K\x03\x86r-\x01\x00\x00h\x19K\x01\x86r.\x01\x00\x00h\x1bK\x02\x86r/\x01\x00\x00h\x1dK\x02\x86r0\x01\x00\x00tr1\x01\x00\x00tr2\x01\x00\x00.'

for n, (i, j) in enumerate(zip(pk1, pk2)):
    if i != j:
        print(n, i, j)

924 11 13
931 13 11
1042 13 11
1049 11 13
1359 11 13
1403 13 11
1477 13 11
1521 11 13

如果我将它们解开并比较结果,它们是相同的:

upk1 = pickle.loads(pk1)
upk2 = pickle.loads(pk2)

print(upk1 == upk2)
True

那么问题是什么导致了这个问题以及如何避免它?是否有一些元数据腌制?

嗯,我发现了一个相关问题Python pickle 不是一对一的:不同的 pickle 给出相同的对象 https://stackoverflow.com/questions/21271479/python-pickle-not-one-to-one-different-pickles-give-same-object。那么pickle对于相同的对象可以返回不同的结果吗?那么它不适合进行哈希计算吗?因为我计划根据 pickled 表示来计算 md5 哈希值。

更新:文本表示s1 and s2:

(('AA1A2A5D4D4D4D4H2H2H3N0N0P4P4a2a3',
  ('AA1A3A5D3D4D4D4H1H2H3N0N1P3P4a2a3', 1),
  ('AA2A3A4D2D3D3D3H0H2H2N2N2P3P3a0a2', 2),
  ('AA4A5A5D1D2D2D3H2H4H4N5N5P2P2a2a4', 5),
  ('DA1A3A4A4D2D2D2H1H2H3N4N4P2P2a1a3', 4),
  ('DA2A3A3A4D1D1D2H1H2H3N3N4P0P0a1a3', 4),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 4),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 4),
  ('HA0A2A2A4D3D3D3D3H2H2N2N2P3P3a0a2', 2),
  ('HA1A2A2A4D2D2D3D3H1H2N1N2P2P2a1a2', 2),
  ('HA2A2A3A3D1D1D2D2H1H2N3N3P1P2a0a2', 3),
  ('NA0A0A2A5D3D4D4D4H1H2H3N0P3P4a2a3', 0),
  ('NA0A1A2A5D4D4D4D4H2H2H3N0P4P4a2a3', 0),
  ('PA2A3A3A4D0D1D1D2H1H2H3N3N4P0a1a3', 4),
  ('PA2A3A4A4D0D0D0D2H2H2H3N4N4P0a2a3', 4),
  ('aA0A2A2A4D3D3D3D3H0H2H2N2N2P3P3a2', 2),
  ('aA2A2A3A3D1D1D2D2H0H1H2N3N3P1P2a2', 3)),
 ('AA1A3A5D3D4D4D4H1H2H3N0N1P3P4a2a3',
  ('AA1A2A5D4D4D4D4H2H2H3N0N0P4P4a2a3', 1),
  ('AA2A3A4D2D3D3D3H0H2H2N2N2P3P3a0a2', 3),
  ('AA4A5A5D1D2D2D3H2H4H4N5N5P2P2a2a4', 5),
  ('DA1A3A4A4D2D2D2H1H2H3N4N4P2P2a1a3', 4),
  ('DA2A3A3A4D1D1D2H1H2H3N3N4P0P0a1a3', 3),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 4),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 4),
  ('HA0A2A2A4D3D3D3D3H2H2N2N2P3P3a0a2', 2),
  ('HA1A2A2A4D2D2D3D3H1H2N1N2P2P2a1a2', 1),
  ('HA2A2A3A3D1D1D2D2H1H2N3N3P1P2a0a2', 3),
  ('NA0A0A2A5D3D4D4D4H1H2H3N0P3P4a2a3', 0),
  ('NA0A1A2A5D4D4D4D4H2H2H3N0P4P4a2a3', 1),
  ('PA2A3A3A4D0D1D1D2H1H2H3N3N4P0a1a3', 3),
  ('PA2A3A4A4D0D0D0D2H2H2H3N4N4P0a2a3', 4),
  ('aA0A2A2A4D3D3D3D3H0H2H2N2N2P3P3a2', 2),
  ('aA2A2A3A3D1D1D2D2H0H1H2N3N3P1P2a2', 3)),
 ('AA2A3A4D2D3D3D3H0H2H2N2N2P3P3a0a2',
  ('AA1A2A5D4D4D4D4H2H2H3N0N0P4P4a2a3', 2),
  ('AA1A3A5D3D4D4D4H1H2H3N0N1P3P4a2a3', 3),
  ('AA4A5A5D1D2D2D3H2H4H4N5N5P2P2a2a4', 4),
  ('DA1A3A4A4D2D2D2H1H2H3N4N4P2P2a1a3', 3),
  ('DA2A3A3A4D1D1D2H1H2H3N3N4P0P0a1a3', 3),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 2),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 3),
  ('HA0A2A2A4D3D3D3D3H2H2N2N2P3P3a0a2', 0),
  ('HA1A2A2A4D2D2D3D3H1H2N1N2P2P2a1a2', 2),
  ('HA2A2A3A3D1D1D2D2H1H2N3N3P1P2a0a2', 2),
  ('NA0A0A2A5D3D4D4D4H1H2H3N0P3P4a2a3', 2),
  ('NA0A1A2A5D4D4D4D4H2H2H3N0P4P4a2a3', 2),
  ('PA2A3A3A4D0D1D1D2H1H2H3N3N4P0a1a3', 3),
  ('PA2A3A4A4D0D0D0D2H2H2H3N4N4P0a2a3', 3),
  ('aA0A2A2A4D3D3D3D3H0H2H2N2N2P3P3a2', 0),
  ('aA2A2A3A3D1D1D2D2H0H1H2N3N3P1P2a2', 2)),
 ('AA4A5A5D1D2D2D3H2H4H4N5N5P2P2a2a4',
  ('AA1A2A5D4D4D4D4H2H2H3N0N0P4P4a2a3', 5),
  ('AA1A3A5D3D4D4D4H1H2H3N0N1P3P4a2a3', 5),
  ('AA2A3A4D2D3D3D3H0H2H2N2N2P3P3a0a2', 4),
  ('DA1A3A4A4D2D2D2H1H2H3N4N4P2P2a1a3', 1),
  ('DA2A3A3A4D1D1D2H1H2H3N3N4P0P0a1a3', 2),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 2),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 3),
  ('HA0A2A2A4D3D3D3D3H2H2N2N2P3P3a0a2', 4),
  ('HA1A2A2A4D2D2D3D3H1H2N1N2P2P2a1a2', 4),
  ('HA2A2A3A3D1D1D2D2H1H2N3N3P1P2a0a2', 2),
  ('NA0A0A2A5D3D4D4D4H1H2H3N0P3P4a2a3', 5),
  ('NA0A1A2A5D4D4D4D4H2H2H3N0P4P4a2a3', 5),
  ('PA2A3A3A4D0D1D1D2H1H2H3N3N4P0a1a3', 2),
  ('PA2A3A4A4D0D0D0D2H2H2H3N4N4P0a2a3', 2),
  ('aA0A2A2A4D3D3D3D3H0H2H2N2N2P3P3a2', 4),
  ('aA2A2A3A3D1D1D2D2H0H1H2N3N3P1P2a2', 2)),
 ('DA1A3A4A4D2D2D2H1H2H3N4N4P2P2a1a3',
  ('AA1A2A5D4D4D4D4H2H2H3N0N0P4P4a2a3', 4),
  ('AA1A3A5D3D4D4D4H1H2H3N0N1P3P4a2a3', 4),
  ('AA2A3A4D2D3D3D3H0H2H2N2N2P3P3a0a2', 3),
  ('AA4A5A5D1D2D2D3H2H4H4N5N5P2P2a2a4', 1),
  ('DA2A3A3A4D1D1D2H1H2H3N3N4P0P0a1a3', 2),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 2),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 2),
  ('HA0A2A2A4D3D3D3D3H2H2N2N2P3P3a0a2', 3),
  ('HA1A2A2A4D2D2D3D3H1H2N1N2P2P2a1a2', 2),
  ('HA2A2A3A3D1D1D2D2H1H2N3N3P1P2a0a2', 1),
  ('NA0A0A2A5D3D4D4D4H1H2H3N0P3P4a2a3', 4),
  ('NA0A1A2A5D4D4D4D4H2H2H3N0P4P4a2a3', 4),
  ('PA2A3A3A4D0D1D1D2H1H2H3N3N4P0a1a3', 2),
  ('PA2A3A4A4D0D0D0D2H2H2H3N4N4P0a2a3', 2),
  ('aA0A2A2A4D3D3D3D3H0H2H2N2N2P3P3a2', 3),
  ('aA2A2A3A3D1D1D2D2H0H1H2N3N3P1P2a2', 1)),
 ('DA2A3A3A4D1D1D2H1H2H3N3N4P0P0a1a3',
  ('AA1A2A5D4D4D4D4H2H2H3N0N0P4P4a2a3', 4),
  ('AA1A3A5D3D4D4D4H1H2H3N0N1P3P4a2a3', 3),
  ('AA2A3A4D2D3D3D3H0H2H2N2N2P3P3a0a2', 3),
  ('AA4A5A5D1D2D2D3H2H4H4N5N5P2P2a2a4', 2),
  ('DA1A3A4A4D2D2D2H1H2H3N4N4P2P2a1a3', 2),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 1),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 1),
  ('HA0A2A2A4D3D3D3D3H2H2N2N2P3P3a0a2', 3),
  ('HA1A2A2A4D2D2D3D3H1H2N1N2P2P2a1a2', 2),
  ('HA2A2A3A3D1D1D2D2H1H2N3N3P1P2a0a2', 1),
  ('NA0A0A2A5D3D4D4D4H1H2H3N0P3P4a2a3', 3),
  ('NA0A1A2A5D4D4D4D4H2H2H3N0P4P4a2a3', 4),
  ('PA2A3A3A4D0D1D1D2H1H2H3N3N4P0a1a3', 0),
  ('PA2A3A4A4D0D0D0D2H2H2H3N4N4P0a2a3', 0),
  ('aA0A2A2A4D3D3D3D3H0H2H2N2N2P3P3a2', 3),
  ('aA2A2A3A3D1D1D2D2H0H1H2N3N3P1P2a2', 1)),
 ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3',
  ('AA1A2A5D4D4D4D4H2H2H3N0N0P4P4a2a3', 4),
  ('AA1A3A5D3D4D4D4H1H2H3N0N1P3P4a2a3', 4),
  ('AA2A3A4D2D3D3D3H0H2H2N2N2P3P3a0a2', 2),
  ('AA4A5A5D1D2D2D3H2H4H4N5N5P2P2a2a4', 3),
  ('DA1A3A4A4D2D2D2H1H2H3N4N4P2P2a1a3', 2),
  ('DA2A3A3A4D1D1D2H1H2H3N3N4P0P0a1a3', 1),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 1),
  ('HA0A2A2A4D3D3D3D3H2H2N2N2P3P3a0a2', 3),
  ('HA1A2A2A4D2D2D3D3H1H2N1N2P2P2a1a2', 3),
  ('HA2A2A3A3D1D1D2D2H1H2N3N3P1P2a0a2', 2),
  ('NA0A0A2A5D3D4D4D4H1H2H3N0P3P4a2a3', 4),
  ('NA0A1A2A5D4D4D4D4H2H2H3N0P4P4a2a3', 4),
  ('PA2A3A3A4D0D1D1D2H1H2H3N3N4P0a1a3', 1),
  ('PA2A3A4A4D0D0D0D2H2H2H3N4N4P0a2a3', 0),
  ('aA0A2A2A4D3D3D3D3H0H2H2N2N2P3P3a2', 3),
  ('aA2A2A3A3D1D1D2D2H0H1H2N3N3P1P2a2', 2)),
 ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3',
  ('AA1A2A5D4D4D4D4H2H2H3N0N0P4P4a2a3', 4),
  ('AA1A3A5D3D4D4D4H1H2H3N0N1P3P4a2a3', 4),
  ('AA2A3A4D2D3D3D3H0H2H2N2N2P3P3a0a2', 3),
  ('AA4A5A5D1D2D2D3H2H4H4N5N5P2P2a2a4', 2),
  ('DA1A3A4A4D2D2D2H1H2H3N4N4P2P2a1a3', 2),
  ('DA2A3A3A4D1D1D2H1H2H3N3N4P0P0a1a3', 1),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 1),
  ('HA0A2A2A4D3D3D3D3H2H2N2N2P3P3a0a2', 3),
  ('HA1A2A2A4D2D2D3D3H1H2N1N2P2P2a1a2', 3),
  ('HA2A2A3A3D1D1D2D2H1H2N3N3P1P2a0a2', 2),
  ('NA0A0A2A5D3D4D4D4H1H2H3N0P3P4a2a3', 4),
  ('NA0A1A2A5D4D4D4D4H2H2H3N0P4P4a2a3', 4),
  ('PA2A3A3A4D0D1D1D2H1H2H3N3N4P0a1a3', 1),
  ('PA2A3A4A4D0D0D0D2H2H2H3N4N4P0a2a3', 0),
  ('aA0A2A2A4D3D3D3D3H0H2H2N2N2P3P3a2', 3),
  ('aA2A2A3A3D1D1D2D2H0H1H2N3N3P1P2a2', 2)),
 ('HA0A2A2A4D3D3D3D3H2H2N2N2P3P3a0a2',
  ('AA1A2A5D4D4D4D4H2H2H3N0N0P4P4a2a3', 2),
  ('AA1A3A5D3D4D4D4H1H2H3N0N1P3P4a2a3', 2),
  ('AA2A3A4D2D3D3D3H0H2H2N2N2P3P3a0a2', 0),
  ('AA4A5A5D1D2D2D3H2H4H4N5N5P2P2a2a4', 4),
  ('DA1A3A4A4D2D2D2H1H2H3N4N4P2P2a1a3', 3),
  ('DA2A3A3A4D1D1D2H1H2H3N3N4P0P0a1a3', 3),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 3),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 3),
  ('HA1A2A2A4D2D2D3D3H1H2N1N2P2P2a1a2', 2),
  ('HA2A2A3A3D1D1D2D2H1H2N3N3P1P2a0a2', 2),
  ('NA0A0A2A5D3D4D4D4H1H2H3N0P3P4a2a3', 2),
  ('NA0A1A2A5D4D4D4D4H2H2H3N0P4P4a2a3', 2),
  ('PA2A3A3A4D0D1D1D2H1H2H3N3N4P0a1a3', 3),
  ('PA2A3A4A4D0D0D0D2H2H2H3N4N4P0a2a3', 3),
  ('aA0A2A2A4D3D3D3D3H0H2H2N2N2P3P3a2', 0),
  ('aA2A2A3A3D1D1D2D2H0H1H2N3N3P1P2a2', 2)),
 ('HA1A2A2A4D2D2D3D3H1H2N1N2P2P2a1a2',
  ('AA1A2A5D4D4D4D4H2H2H3N0N0P4P4a2a3', 2),
  ('AA1A3A5D3D4D4D4H1H2H3N0N1P3P4a2a3', 1),
  ('AA2A3A4D2D3D3D3H0H2H2N2N2P3P3a0a2', 2),
  ('AA4A5A5D1D2D2D3H2H4H4N5N5P2P2a2a4', 4),
  ('DA1A3A4A4D2D2D2H1H2H3N4N4P2P2a1a3', 2),
  ('DA2A3A3A4D1D1D2H1H2H3N3N4P0P0a1a3', 2),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 3),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 3),
  ('HA0A2A2A4D3D3D3D3H2H2N2N2P3P3a0a2', 2),
  ('HA2A2A3A3D1D1D2D2H1H2N3N3P1P2a0a2', 1),
  ('NA0A0A2A5D3D4D4D4H1H2H3N0P3P4a2a3', 1),
  ('NA0A1A2A5D4D4D4D4H2H2H3N0P4P4a2a3', 2),
  ('PA2A3A3A4D0D1D1D2H1H2H3N3N4P0a1a3', 2),
  ('PA2A3A4A4D0D0D0D2H2H2H3N4N4P0a2a3', 2),
  ('aA0A2A2A4D3D3D3D3H0H2H2N2N2P3P3a2', 2),
  ('aA2A2A3A3D1D1D2D2H0H1H2N3N3P1P2a2', 1)),
 ('HA2A2A3A3D1D1D2D2H1H2N3N3P1P2a0a2',
  ('AA1A2A5D4D4D4D4H2H2H3N0N0P4P4a2a3', 3),
  ('AA1A3A5D3D4D4D4H1H2H3N0N1P3P4a2a3', 3),
  ('AA2A3A4D2D3D3D3H0H2H2N2N2P3P3a0a2', 2),
  ('AA4A5A5D1D2D2D3H2H4H4N5N5P2P2a2a4', 2),
  ('DA1A3A4A4D2D2D2H1H2H3N4N4P2P2a1a3', 1),
  ('DA2A3A3A4D1D1D2H1H2H3N3N4P0P0a1a3', 1),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 2),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 2),
  ('HA0A2A2A4D3D3D3D3H2H2N2N2P3P3a0a2', 2),
  ('HA1A2A2A4D2D2D3D3H1H2N1N2P2P2a1a2', 1),
  ('NA0A0A2A5D3D4D4D4H1H2H3N0P3P4a2a3', 3),
  ('NA0A1A2A5D4D4D4D4H2H2H3N0P4P4a2a3', 3),
  ('PA2A3A3A4D0D1D1D2H1H2H3N3N4P0a1a3', 1),
  ('PA2A3A4A4D0D0D0D2H2H2H3N4N4P0a2a3', 2),
  ('aA0A2A2A4D3D3D3D3H0H2H2N2N2P3P3a2', 2),
  ('aA2A2A3A3D1D1D2D2H0H1H2N3N3P1P2a2', 0)),
 ('NA0A0A2A5D3D4D4D4H1H2H3N0P3P4a2a3',
  ('AA1A2A5D4D4D4D4H2H2H3N0N0P4P4a2a3', 0),
  ('AA1A3A5D3D4D4D4H1H2H3N0N1P3P4a2a3', 0),
  ('AA2A3A4D2D3D3D3H0H2H2N2N2P3P3a0a2', 2),
  ('AA4A5A5D1D2D2D3H2H4H4N5N5P2P2a2a4', 5),
  ('DA1A3A4A4D2D2D2H1H2H3N4N4P2P2a1a3', 4),
  ('DA2A3A3A4D1D1D2H1H2H3N3N4P0P0a1a3', 3),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 4),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 4),
  ('HA0A2A2A4D3D3D3D3H2H2N2N2P3P3a0a2', 2),
  ('HA1A2A2A4D2D2D3D3H1H2N1N2P2P2a1a2', 1),
  ('HA2A2A3A3D1D1D2D2H1H2N3N3P1P2a0a2', 3),
  ('NA0A1A2A5D4D4D4D4H2H2H3N0P4P4a2a3', 0),
  ('PA2A3A3A4D0D1D1D2H1H2H3N3N4P0a1a3', 3),
  ('PA2A3A4A4D0D0D0D2H2H2H3N4N4P0a2a3', 4),
  ('aA0A2A2A4D3D3D3D3H0H2H2N2N2P3P3a2', 2),
  ('aA2A2A3A3D1D1D2D2H0H1H2N3N3P1P2a2', 3)),
 ('NA0A1A2A5D4D4D4D4H2H2H3N0P4P4a2a3',
  ('AA1A2A5D4D4D4D4H2H2H3N0N0P4P4a2a3', 0),
  ('AA1A3A5D3D4D4D4H1H2H3N0N1P3P4a2a3', 1),
  ('AA2A3A4D2D3D3D3H0H2H2N2N2P3P3a0a2', 2),
  ('AA4A5A5D1D2D2D3H2H4H4N5N5P2P2a2a4', 5),
  ('DA1A3A4A4D2D2D2H1H2H3N4N4P2P2a1a3', 4),
  ('DA2A3A3A4D1D1D2H1H2H3N3N4P0P0a1a3', 4),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 4),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 4),
  ('HA0A2A2A4D3D3D3D3H2H2N2N2P3P3a0a2', 2),
  ('HA1A2A2A4D2D2D3D3H1H2N1N2P2P2a1a2', 2),
  ('HA2A2A3A3D1D1D2D2H1H2N3N3P1P2a0a2', 3),
  ('NA0A0A2A5D3D4D4D4H1H2H3N0P3P4a2a3', 0),
  ('PA2A3A3A4D0D1D1D2H1H2H3N3N4P0a1a3', 4),
  ('PA2A3A4A4D0D0D0D2H2H2H3N4N4P0a2a3', 4),
  ('aA0A2A2A4D3D3D3D3H0H2H2N2N2P3P3a2', 2),
  ('aA2A2A3A3D1D1D2D2H0H1H2N3N3P1P2a2', 3)),
 ('PA2A3A3A4D0D1D1D2H1H2H3N3N4P0a1a3',
  ('AA1A2A5D4D4D4D4H2H2H3N0N0P4P4a2a3', 4),
  ('AA1A3A5D3D4D4D4H1H2H3N0N1P3P4a2a3', 3),
  ('AA2A3A4D2D3D3D3H0H2H2N2N2P3P3a0a2', 3),
  ('AA4A5A5D1D2D2D3H2H4H4N5N5P2P2a2a4', 2),
  ('DA1A3A4A4D2D2D2H1H2H3N4N4P2P2a1a3', 2),
  ('DA2A3A3A4D1D1D2H1H2H3N3N4P0P0a1a3', 0),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 1),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 1),
  ('HA0A2A2A4D3D3D3D3H2H2N2N2P3P3a0a2', 3),
  ('HA1A2A2A4D2D2D3D3H1H2N1N2P2P2a1a2', 2),
  ('HA2A2A3A3D1D1D2D2H1H2N3N3P1P2a0a2', 1),
  ('NA0A0A2A5D3D4D4D4H1H2H3N0P3P4a2a3', 3),
  ('NA0A1A2A5D4D4D4D4H2H2H3N0P4P4a2a3', 4),
  ('PA2A3A4A4D0D0D0D2H2H2H3N4N4P0a2a3', 0),
  ('aA0A2A2A4D3D3D3D3H0H2H2N2N2P3P3a2', 3),
  ('aA2A2A3A3D1D1D2D2H0H1H2N3N3P1P2a2', 1)),
 ('PA2A3A4A4D0D0D0D2H2H2H3N4N4P0a2a3',
  ('AA1A2A5D4D4D4D4H2H2H3N0N0P4P4a2a3', 4),
  ('AA1A3A5D3D4D4D4H1H2H3N0N1P3P4a2a3', 4),
  ('AA2A3A4D2D3D3D3H0H2H2N2N2P3P3a0a2', 3),
  ('AA4A5A5D1D2D2D3H2H4H4N5N5P2P2a2a4', 2),
  ('DA1A3A4A4D2D2D2H1H2H3N4N4P2P2a1a3', 2),
  ('DA2A3A3A4D1D1D2H1H2H3N3N4P0P0a1a3', 0),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 0),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 0),
  ('HA0A2A2A4D3D3D3D3H2H2N2N2P3P3a0a2', 3),
  ('HA1A2A2A4D2D2D3D3H1H2N1N2P2P2a1a2', 2),
  ('HA2A2A3A3D1D1D2D2H1H2N3N3P1P2a0a2', 2),
  ('NA0A0A2A5D3D4D4D4H1H2H3N0P3P4a2a3', 4),
  ('NA0A1A2A5D4D4D4D4H2H2H3N0P4P4a2a3', 4),
  ('PA2A3A3A4D0D1D1D2H1H2H3N3N4P0a1a3', 0),
  ('aA0A2A2A4D3D3D3D3H0H2H2N2N2P3P3a2', 3),
  ('aA2A2A3A3D1D1D2D2H0H1H2N3N3P1P2a2', 2)),
 ('aA0A2A2A4D3D3D3D3H0H2H2N2N2P3P3a2',
  ('AA1A2A5D4D4D4D4H2H2H3N0N0P4P4a2a3', 2),
  ('AA1A3A5D3D4D4D4H1H2H3N0N1P3P4a2a3', 2),
  ('AA2A3A4D2D3D3D3H0H2H2N2N2P3P3a0a2', 0),
  ('AA4A5A5D1D2D2D3H2H4H4N5N5P2P2a2a4', 4),
  ('DA1A3A4A4D2D2D2H1H2H3N4N4P2P2a1a3', 3),
  ('DA2A3A3A4D1D1D2H1H2H3N3N4P0P0a1a3', 3),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 3),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 3),
  ('HA0A2A2A4D3D3D3D3H2H2N2N2P3P3a0a2', 0),
  ('HA1A2A2A4D2D2D3D3H1H2N1N2P2P2a1a2', 2),
  ('HA2A2A3A3D1D1D2D2H1H2N3N3P1P2a0a2', 2),
  ('NA0A0A2A5D3D4D4D4H1H2H3N0P3P4a2a3', 2),
  ('NA0A1A2A5D4D4D4D4H2H2H3N0P4P4a2a3', 2),
  ('PA2A3A3A4D0D1D1D2H1H2H3N3N4P0a1a3', 3),
  ('PA2A3A4A4D0D0D0D2H2H2H3N4N4P0a2a3', 3),
  ('aA2A2A3A3D1D1D2D2H0H1H2N3N3P1P2a2', 2)),
 ('aA2A2A3A3D1D1D2D2H0H1H2N3N3P1P2a2',
  ('AA1A2A5D4D4D4D4H2H2H3N0N0P4P4a2a3', 3),
  ('AA1A3A5D3D4D4D4H1H2H3N0N1P3P4a2a3', 3),
  ('AA2A3A4D2D3D3D3H0H2H2N2N2P3P3a0a2', 2),
  ('AA4A5A5D1D2D2D3H2H4H4N5N5P2P2a2a4', 2),
  ('DA1A3A4A4D2D2D2H1H2H3N4N4P2P2a1a3', 1),
  ('DA2A3A3A4D1D1D2H1H2H3N3N4P0P0a1a3', 1),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 2),
  ('DA2A3A4A4D1D1D2H2H3H3N4N4P0P1a2a3', 2),
  ('HA0A2A2A4D3D3D3D3H2H2N2N2P3P3a0a2', 2),
  ('HA1A2A2A4D2D2D3D3H1H2N1N2P2P2a1a2', 1),
  ('HA2A2A3A3D1D1D2D2H1H2N3N3P1P2a0a2', 0),
  ('NA0A0A2A5D3D4D4D4H1H2H3N0P3P4a2a3', 3),
  ('NA0A1A2A5D4D4D4D4H2H2H3N0P4P4a2a3', 3),
  ('PA2A3A3A4D0D1D1D2H1H2H3N3N4P0a1a3', 1),
  ('PA2A3A4A4D0D0D0D2H2H2H3N4N4P0a2a3', 2),
  ('aA0A2A2A4D3D3D3D3H0H2H2N2N2P3P3a2', 2)))

问题是pickle 保留子对象之间的身份关系 https://docs.python.org/3/library/pickle.html#comparison-with-marshal(这是为了效率和处理递归对象):

a1 = "a" * 30
a2 = "a" * 30
s1 = (a1, a2, a1)
s2 = (a1, a2, a2)
print(pickle.dumps(s1) == pickle.dumps(s2))
False

Here, a1 and a2是平等的,但是是不同的对象(它们有不同的id; see python什么时候选择intertern一个字符串 https://stackoverflow.com/questions/10622472/when-does-python-choose-to-intern-a-string?lq=1); s1 and s2再次相等,但在s1第三个元素是同一个物体 as the first元素,同时在s2第三个元素与第一个元素是同一个对象second元素。

我们可以通过拆解泡菜来看到这一点:

>>> pickletools.dis(pickle.dumps(s1))
    0: \x80 PROTO      3
    2: X    BINUNICODE 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
   37: q    BINPUT     0
   39: X    BINUNICODE 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
   74: q    BINPUT     1
   76: h    BINGET     0  # <=== watch this line *********************
   78: \x87 TUPLE3
   79: q    BINPUT     2
   81: .    STOP
highest protocol among opcodes = 2

>>> pickletools.dis(pickle.dumps(s2))
    0: \x80 PROTO      3
    2: X    BINUNICODE 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
   37: q    BINPUT     0
   39: X    BINUNICODE 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
   74: q    BINPUT     1
   76: h    BINGET     1  # <=== this is different *********************
   78: \x87 TUPLE3
   79: q    BINPUT     2
   81: .    STOP
highest protocol among opcodes = 2

一个快速(如果效率低下)的解决方法可能是通过使用来破坏对象标识ast.literal_eval从它们重新创建元组repr:

>>> print(pickle.dumps(ast.literal_eval(repr(s1))) == pickle.dumps(ast.literal_eval(repr(s2))))
True
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

相同的元组给出不同的泡菜 的相关文章

  • Pandas apply 与 np.vectorize 从现有列创建新列的性能

    我正在使用 Pandas 数据框 并希望创建一个新列作为现有列的函数 我还没有看到关于之间速度差异的很好的讨论df apply and np vectorize 所以我想我会在这里问 熊猫apply 功能很慢 根据我的测量 在一些实验中如下
  • Python 在 chroot 中运行时出现错误

    我尝试在 chroot 中运行一些 Python 程序 但出现以下错误 Could not find platform independent libraries
  • 底图上的子图

    我有一张英国地图和 121 个地点 每个地点有 3 个值 我想绘制 121 个位置中每个位置的三个值的小条形图 目前 这些值绘制为markersize属性 看起来像这样 密集恐惧症情节 https i stack imgur com 5fv
  • 子进程改变目录

    我想在子目录 超级目录中执行脚本 我需要首先进入该子目录 超级目录 我无法得到subprocess进入我的子目录 tducin localhost Projekty tests ve python Python 2 7 4 default
  • Python,将迭代函数变成递归函数

    我创建了一个输出 4 3 2 1 0 1 2 3 4 的迭代函数 def bounce2 n s n for i in range n print n n n 1 if n lt 0 for i in range s 1 print n n
  • Scikit-learn 的内核 PCA:如何在 KPCA 中实现各向异性高斯内核或任何其他自定义内核?

    我目前正在使用Scikit learn 的 KPCA https scikit learn org stable modules generated sklearn decomposition KernelPCA html对我的数据集执行降
  • Python 正则表达式部分匹配或“hitEnd”

    我正在编写一个扫描器 因此我将任意字符串与正则表达式规则列表进行匹配 如果我可以模拟 Java hitEnd 功能 不仅知道正则表达式何时不匹配 还知道何时匹配 这将非常有用 can t匹配 当正则表达式匹配器在决定拒绝输入之前到达输入末尾
  • 为 Networkx 图添加标题?

    我希望我的代码创建一个带有标题的图 使用下面的代码 可以创建绘图 但没有标题 有人可以告诉我我做错了什么吗 import pandas as pd import networkx as nx from networkx algorithms
  • 杂乱的扭曲连接在不干净的时尚中消失了。没有代理。已经尝试过标题

    我正在尝试抓取这个网站 https www5 apply2jobs com jupitermed ProfExt index cfm fuseaction mExternal searchJobs https www5 apply2jobs
  • Django - 电子邮件发送两次

    每当我使用如下所示的电子邮件设置从views py调用下面的方法时 电子邮件的两份副本都会发送给收件人 并且我收到如下所示的错误 def sendEmailBasic request msg EmailMessage Request Cal
  • 在 matplotlib 中使用 yscale('log') 时缺少误差线

    在某些情况下 当使用对数刻度时 matplotlib 会错误地显示带有误差条的图 假设这些数据 例如在 pylab 内 s 19 0 20 0 21 0 22 0 24 0 v 36 5 66 814250000000001 130 177
  • 如何检查列表是否为空?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 例如 如果通过以下内容 a 我如何检查是否a是空的 if not a print Lis
  • 如何强制 Y 轴仅使用整数

    我正在使用 matplotlib pyplot 模块绘制直方图 我想知道如何强制 y 轴标签仅显示整数 例如 0 1 2 3 等 而不显示小数 例如 0 0 5 1 1 5 2 等 我正在查看指导说明并怀疑答案就在附近matplotlib
  • 从另一个 python 脚本获取返回信息

    我在 Linux 上 我有一个 python 脚本 我想从另一个 python 脚本调用它 我不想将其作为模块导入 为了一层安全性 现在为了学术练习 因为我想弄清楚这一点 我实际上想让一个脚本使用 os system 或另一个类似的函数 并
  • SQLAlchemy:避免声明式样式类定义中的重复

    我正在使用 SQLAlchemy 并且我的对象模型中的许多类具有相同的两个属性 id 和 整数和主键 以及名称 字符串 我试图避免在每个类中声明它们 如下所示 class C1 declarative base id Column Inte
  • 获取调用者文件的绝对路径

    假设我在不同的目录中有两个文件 1 py 比如说 在C FIRST FOLDER 1 py and 2 py 比如说 在C SECOND FOLDER 2 py 文件1 py进口2 py using sys path insert 0 pa
  • scipysolve_ivp() 中的访问时间步长

    我有一个常微分方程系统 正在使用 scipy 的solve ivp 函数求解 它运行良好 但我在访问每个步骤中使用的时间步时遇到问题 我知道solve ivp 将当前时间传递给用户定义的函数 但我需要使用的时间步长 而不是当前时间 为了解决
  • 在Python中从日期时间中减去秒

    我有一个 int 变量 它实际上是秒 让我们调用这个秒数X 我需要得到当前日期和时间 以日期时间格式 减去的结果X秒 Example If X是 65 当前日期是2014 06 03 15 45 00 那么我需要得到结果2014 06 03
  • 在游戏中实现功能

    我在完成这部分作业时遇到了麻烦 我必须宣布游戏的获胜者 然后输入到函数中 输入所有 if 语句后 我必须创建一个函数def playGame 这必须包括 showRules user getUserChoice computer getCo
  • 从 pandas 数据框中绘制堆积条形图

    我有数据框 payout df head 10 复制以下 Excel 绘图的最简单 最智能和最快的方法是什么 我尝试过不同的方法 但无法让一切都到位 Thanks 如果您只想要一个堆积条形图 那么一种方法是使用循环来绘制数据框中的每一列 并

随机推荐

  • 如何使用 Selenium 进行搜索、向下箭头并按 Enter 键

    我正在尝试搜索一家公司 在 inhersight com 上向下箭头并单击 Enter 我有以下代码 但它似乎不起作用 from selenium import webdriver from selenium webdriver commo
  • Flutter 可以高效地布局嵌套列表吗?

    这样的布局在 Flutter 中能否实现并高效渲染 Example 黄色和蓝色块都可以有大约 30 个元素 所以我想应该使用类似 ListView builder 的东西 我尝试过嵌套2个ListView builder 内部带有shrin
  • Knuth-Morris-Pratt 失效表

    我正在准备考试 正在研究 Knuth Morris Pratt 算法 考试内容是不及格表和 DFA 构建 我了解 DFA 构造 但我不太了解如何制作失败表 如果我有一个模式 abababc 的示例 如何从中构建失败表 解决办法是 失败表 0
  • 无法使用javascript下载大数据

    我在 javascript 中有大量 JSON 对象形式的数据 我已使用 JSON stringify 将其转换为字符串 现在我的用例是在文本文件中向用户提供这个大字符串 为此 我编写了下面的代码 HTML代码
  • 为什么文档为空?

    更新 使用接近工作的解决方案 我试图让 跳到内容 链接跳转到 content start 之后的第一个可聚焦元素 登录库 component ts import Component OnInit from angular core impo
  • 合并R中不同大小和条件的数据帧

    我正在尝试将 2 个 csv 文件合并为一个文件 它们有共同的 id 但大小不同 我使用了 merge 但我得到了复制的数据 我有以下数据框 SR lt c SR1 SR2 SR2 SR2 SR3 SR4 SR4 school lt c S
  • mysqli:mysqli_result 无法转换为字符串[重复]

    这个问题在这里已经有答案了 我知道已经有人问过很多类似的问题 但我无法将其转化为我的问题 所以这就是我再次询问的原因 代码过去运行良好 但由于 mysql 即将被弃用 我想将其转换为 mysqli 当尝试从数据库读取某些内容时 我收到以下错
  • 具有多列的雄辩 WHERE LIKE 子句

    我正在实现一个搜索栏 可以按名字 姓氏或两者搜索客户 所以 举例来说 Mike Hizer将匹配Mike Hizer zer Mike Hizer等等 这是我想出的 Customer where DB raw concat first na
  • 为 Windows 制作热键最简单的方法是什么?

    For example you push Ctrl V and insert the buffer content into the window How can I create my own hotkeys like that Sorr
  • 在 C#/.NET 中将参数标记为不可为空?

    是否有一个简单的属性或数据契约可以分配给函数参数来阻止null从 C NET 中传递 理想情况下 这也会在编译时进行检查以确保文字null没有在任何地方使用它并且在运行时抛出ArgumentNullException 目前我写的东西像 if
  • Cocos2d for android 支持不同分辨率

    我正在尝试构建一款游戏 并且想知道如何支持不同的分辨率和屏幕尺寸 对于精灵的位置 我实现了一个基本函数 它根据一定的比例设置位置 这是通过从sharedDirector的winSize方法获取屏幕宽度和高度获得的 但这种方法没有经过测试 因
  • 使用 std::fill 用递增的数字填充向量

    我想填写一个vector
  • git status --ignored 无限期挂起

    tl dr 跑步git status ignored在我的项目的根永远不会完成 git status工作正常 我开始从我的 IDE PhpStorm 中看到此问题的症状 尽管此问题适用于所有 IntelliJ IDE 没有与 git 相关的
  • 如何在 TreeTable 的第二列中显示树线

    我正在使用 TreeTable com jidesoft grid 请参阅树表 http www jidesoft com javadoc com jidesoft grid TreeTable html 来显示分层数据 它在第一列上使用特
  • typedef 和模板参数同名

    为什么这种情况不正确 这是合乎逻辑的 template
  • Python物理库? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有适用于 Linux 的 Python 的最新物理库 我刚刚开始使用 PyGame 来学习 Pyt
  • 您如何处理 C# 的新功能,以免它们导致编写出糟糕的代码?

    C 3 0 中引入了许多让我感到不安的功能 例如对象初始值设定项 扩展方法和隐式类型变量 现在 在 C 4 0 中 像动态关键字这样的东西我变得更加担心 我知道这些功能中的每一个CAN以适当的方式使用BUT在我看来 它们使开发人员更容易做出
  • 如何从我的应用程序将信用卡添加到 Google Pay?

    我正在开发移动银行应用程序 显然它管理我们的银行信用卡 所以现在我需要在我的应用程序中实现 将此卡添加到 Google Pay 按钮 但如何为此执行 Google Pay API 请求 我无法找到任何相关文档 这这里只有一个关于 SO 的问
  • 如何知道用户是否已付费订阅

    我正在看这个tutorial https www patchesoft com paypal api subscription php创建我自己的贝宝订阅网关 我以前从未对 API 如此困惑和迷失过 因此 当我们创建计划时 我们会设置商家偏
  • 相同的元组给出不同的泡菜

    这种情况很奇怪 我希望有一些关于 pickle 模块的东西我不知道 我有两个元组s1 and s2 如果我比较它们它会返回True s1 s2 True 如果我腌制它们并比较结果 它会返回False pickle dumps s1 pick