我正在从包含字典的二进制文件中读取数据,如下所示:
a_dict =
{'8a50b9f75b57104d89b58305d96045df':[b'\x94*\x08\x9d\xd8', 0, 1, 4, 6, 7],
'bff92f621cc65e2103305343a943c9a8':[b'\x85*\xe4\xf0\xd7', 2, 3, 5, 8, 9]}
其中二进制代码是文件内容本身,其余列表项是索引。因此,对于这种特定情况,输出应如下所示(不带双倍空格):
(1st hash) (1st hash) (2nd hash) (2nd hash)
\x94*\x08\x9d\xd8 \x94*\x08\x9d\xd8 \x85*\xe4\xf0\xd7 \x85*\xe4\xf0\xd7 ...
我在执行此操作时遇到了一些麻烦,本网站上的其他示例并非我所需要的(我确定它们在那里,但也许我在搜索错误的关键字) )。
我的代码如下:
with open(fname, 'rb') as f:
a_dict = pickle.load(f)
for value in a_dict.values():
print(value[1:])
这给了我两个用来重建文件的列表[0, 1, 4]
和[2, 3, 5]
。我需要一种方法来遍历这些列表(顺序为0、1、2、3,...)并连接相应的字节。
答案 0 :(得分:0)
假设您需要连接的字节是每个列表的首个元素,那么:
with open(fname, 'rb') as f:
bytes_list = []
a_dict = pickle.load(f)
for values_list in a_dict.values():
file_bytes = values_list.pop(0)
for Val in values_list:
bytes_list.append((val, file_bytes[Val]))
Result = [byt for Val, byt in sorted(bytes_list, key=lambda x: x[1])]
对不起,可能是编译错误,我在手机上