簡體   English   中英

從Python中的字典鍵重建數據

[英]Reconstruct data from dictionary keys in Python

我正在從包含字典的二進制文件中讀取數據,如下所示:

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,...)並連接相應的字節。

假設您需要連接的字節是每個列表的首個元素,則:

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])]

抱歉,可能是編譯錯誤,我在手機上

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM