簡體   English   中英

如何將 txt 文件中的行分組到嵌套字典(Python)

[英]How to group the line in txt file to nested dictionary (Python)

我有一個包含以下數據的 txt 文件:

Id_1 1111
Member_a 2222
Member_b 3333
Member_c 4444
Device_a 5555
Device_b 6666

Id_2 1234
Member_a 5678
Member_b 1345
Device_a 3141

Id_3 1317
Member_a 5643
Member_b 4678
Member_c 4654
Member_e 4674
member_f 2314
Device_a 4433
Device_b 4354

.
.
.

and so on

每個 id 中包含 3 個字段,每個字段都有不同數量的子字段(例如,一些 id 有 4 個成員,但有些只有 2 個成員)有什么方法可以將這些數據組合成類似嵌套字典?

這是預期的 output:

{
 'id': 'Id_1', 
 'member': [{'Member_a': 2222}, {'Member_b': 3333}, {'Member_c': 4444}],
 'Device' : [{'Device_a': 5555}, {'Device_b': 6666}]
}

先感謝您!

在下面的代碼中,“blankpaper.txt”包含您提供的文本。 我構建了符合預期的字典 output 並將每個字典存儲在列表dicts中。

在我的版本中,我已將最終 output 中的所有字符串設為小寫,但您可以根據需要相應地調整代碼。 我不確定您的數據文件是否有時在一行中有例如member_f ,而在另一行中有Member_f ,或者這是否只是上面的錯字。 如果知道類似的信息,則可以使代碼更有效率。

dicts = []

with open("blankpaper.txt") as f:
    for line in f:
        # if line not empty
        if (split := line.split()):
            a = split[0].lower()
            b = a[0:a.rfind('_')]
            if "id" == b:
                temp = {'id': a, 'member': [], 'device': []}
                dicts.append(temp)
            elif "member" == b:
                temp['member'].append({a: int(split[1])})
            elif "device" == b:
                temp['device'].append({a: int(split[1])})

print(dicts)

Output

[{'id': 'id_1', 'member': [{'member_a': 2222}, {'member_b': 3333}, {'member_c': 4444}], 'device': [{'device_a': 5555}, {'device_b': 6666}]}, {'id': 'id_2', 'member': [{'member_a': 5678}, {'member_b': 1345}], 'device': [{'device_a': 3141}]}, {'id': 'id_3', 'member': [{'member_a': 5643}, {'member_b': 4678}, {'member_c': 4654}, {'member_e': 4674}, {'member_f': 2314}], 'device': [{'device_a': 4433}, {'device_b': 4354}]}]

我希望這有幫助。 如果有任何問題或者這不是您想要的,請告訴我。

暫無
暫無

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

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