python - 在 Python 中创建关于特定人的爱好的字典名称:[hobby_1, hobby_2]
问题描述
我该怎么做呢?假设我有一个 .txt 文件,它看起来像下面第一个代码块中的内容,请记住 1 个名称可能不止一次地出现在 .txt 文件中,例如 Jack 的爱好是制作和滑板。
Jack:crafting
Peter:hiking
Wendy:gaming
Monica:tennis
Chris:origami
Sophie:sport
Monica:design
Carmen:sport
Chris:sport
Monica:skateboarding
Carmen:cooking
Wendy:photography
Monica:tennis
Cooper:yoga
Wendy:sport
Cooper:movies
Monica:theatre
Cooper:yoga
Chris:gaming
Molly:fishing
Jack:skateboarding
代码
def create_dictionary(file):
"""
Create dictionary about given peoples' hobbies as Name: [hobby_1, hobby_2].
:param file: original file path
:return: dict
"""
dct = {}
with open(file, encoding='utf-8') as file:
for line in file:
???
提前谢谢了。
解决方案
您可以defaultdict
使用 alist
作为工厂,如果密钥不存在,它会使用 a 初始化映射,list
因此您可以直接append
from collections import defaultdict
def create_dictionary(file):
dct = defaultdict(set)
with open(file, encoding='utf-8') as file:
for line in file:
name, hobby = line.rstrip().split(":")
dct[name].add(hobby)
return dct
# return {k: list(v) for k, v in dct.items()} if for later you need values to be list
返回
{
"Jack": ["crafting","skateboarding"],
"Peter": ["hiking"],
"Wendy": ["gaming","photography","sport"],
"Monica": ["tennis","design","skateboarding","tennis","theatre"],
"Chris": ["origami","sport","gaming"],
"Sophie": ["sport"],
"Carmen": ["sport","cooking"],
"Cooper": ["yoga","movies","yoga"],
"Molly": ["fishing"]
}
推荐阅读
- sql-server - SQLServerBulkCopy JDBC driver - How it works
- postgresql - Access PostgreSQL Database Outside Local Network
- javascript - Puppeteer 评估返回未定义
- c# - OpenTK:GLFW.PollEvents() 处的 System.ExecutionEngineException
- angular9 - "Property 'then' does not exist on type 'void'." when using spinner.show().then()
- haskell - Haskell - 编写一个函数 countPositives 来计算列表中的正数(严格大于 0 的数)
- php - Receiving a php loading error after reinstalling WordPress
- android - Query Cloud firestore based on price
- python - How would you scan an email for a key, perform a task once that key is found, and then completely exit the code once that task has been finished?
- javascript - How to fix React Context's object is not a function - TypeError