首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Python中从字典键重新构造数据

在Python中从字典键重新构造数据
EN

Stack Overflow用户
提问于 2018-08-05 06:46:25
回答 1查看 35关注 0票数 0

我正在从一个包含字典的二进制文件中读取数据,如下所示:

代码语言:javascript
复制
a_dict = 
{'8a50b9f75b57104d89b58305d96045df':[b'\x94*\x08\x9d\xd8', 0, 1, 4, 6, 7],
 'bff92f621cc65e2103305343a943c9a8':[b'\x85*\xe4\xf0\xd7', 2, 3, 5, 8, 9]}

其中二进制码是文件内容本身,其余列表项是索引。因此,对于此特定情况,输出应如下所示(不带两个空格):

代码语言:javascript
复制
    (1st hash)          (1st hash)        (2nd hash)        (2nd hash)
\x94*\x08\x9d\xd8  \x94*\x08\x9d\xd8  \x85*\xe4\xf0\xd7  \x85*\xe4\xf0\xd7 ...

我在这方面遇到了一些麻烦,这个网站上的其他例子并不完全是我正在寻找的(我确信它们就在那里,但可能我搜索错了关键字)。

我的代码如下:

代码语言:javascript
复制
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,...)并连接相应的字节。

EN

回答 1

Stack Overflow用户

发布于 2018-08-05 07:36:10

假设您需要对cat进行欺骗的字节是每个列表的第一个元素,那么:

代码语言:javascript
复制
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])]

对于可能的编译错误,我很抱歉,我正在打电话

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51690094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档