首页 > 解决方案 > 如果键列表中的所有元素都存在,则检索键 n 字典

问题描述

我有很多带有特定字符串的文件,必须根据这些字符串将它们分组到单独的文件中。

我有一个必须存在于文件中的字符串列表,当它们都存在于同一个文件中时,它们将被提取并包含在第二个文件中。我最初的想法是将文本转换为字典,然后,如果列表中的所有元素都存在于字典中,则提取它们并创建、添加到新文件中。

list_str = ["Ana", "Beatrice", "Mike"]

File1= {"Ana":["red", "lamp"], "Beatrice":["blue", "notebook"], "Mike":["green", "t-shirt"]}
File2= {"Ana":["big", "car"], "Beatrice":["ugly","bike"], "Mike":["plastic", "boat"]}
File3= {"Beatrice":["fried","egg"], "Mike":["toasted","bread"]}
File4= {"Ana":["new","phone"], "Beatrice":["black","computer"]}
File5= {"Ana":["black","pen"], "Beatrice":["white","glue"], "Mike":["blue","pencil"]}

有了这些信息,我的预期结果是:

new_files = {"Ana": [ ["red", "lamp"],["big", "car"],["black","pen"]], "Beatrice": [["blue", "notebook"],  ["ugly","bike"], ["white","glue"] ], "Mike":[["green", "t-shirt"],["plastic", "boat"], ["blue","pencil"]   ] }

之后我将转换字典 new_files,使用它们的键作为文件名,并将它们在每个列表中的内容作为一行。

像这样以相同的顺序处理 File1,File2,...,FileN

Ana.txt
>red lamp
>big car
>black pen

有什么建议吗?同时,我会继续努力。

标签: pythonpython-3.x

解决方案


您将需要您的文件列表以某种方式可迭代(我已将它们放在列表中files),但我将通过以下方式获得您的预期输出:

names = ["Ana", "Beatrice", "Mike"]

File1= {"Ana":["red", "lamp"], "Beatrice":["blue", "notebook"], "Mike":["green", "t-shirt"]}
File2= {"Ana":["big", "car"], "Beatrice":["ugly","bike"], "Mike":["plastic", "boat"]}
File3= {"Beatrice":["fried","egg"], "Mike":["toasted","bread"]}
File4= {"Ana":["new","phone"], "Beatrice":["black","computer"]}
File5= {"Ana":["black","pen"], "Beatrice":["white","glue"], "Mike":["blue","pencil"]}

files = [File1, File2, File3, File4, File5]

new_files = {name: [] for name in names}
for name in names:
    for file in files:
        if all(name in file.keys() for name in names):
            new_files[name].append(file[name])

print(new_files)

推荐阅读