python - 如果键列表中的所有元素都存在,则检索键 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
有什么建议吗?同时,我会继续努力。
解决方案
您将需要您的文件列表以某种方式可迭代(我已将它们放在列表中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)
推荐阅读
- python - 动态搜索列表中匹配条件的值
- c++ - 是比特集吗?仅当编写为 Oneliner 时,函数才返回错误结果
- asp.net - ASP.NET MVC 5 - 没有智能感知 .cshtml 文件
- angular - 从服务绑定属性到组件Angular 4
- perl - 将我的输出拆分为多个文件
- google-bigquery - 无法在没有可用于分区消除的过滤器的情况下查询表
- python - Python从txt文件中提取数据并忽略标题
- python - 对组应用操作
- node.js - 用于 Express 的 HTTP2 推送
- c# - 打开存储在 SQL Server 中的 Word 文件