从文件中的每一行创建一个字典

2024-01-04

我正在尝试从这个文件创建一个字典:键是第一个单词,值是后面的所有单词。

andrew fred
fred
judy andrew fred
george judy andrew
john george

这是我的代码:

follows_file = open("C:\\Users\\Desktop\\Python\\follows.txt")
followers = {}
for line in follows_file:   #==> [Judy Andrew Fred]
    users = line.split(' ')     #==> [Judy, andrew, Fred, ....]
    follower = users[0]     #==> [Judy]
    followed_by = users[1:] #==> [Andrew, Fred]

    for user in followed_by:
        # Add the 'follower to the list of followers user
        if user not in followers:
            followers[user] = []
        followers[user].append(follower)
print(followers.items())

当我打印follower and 其次是变量,它们是正确的,但我无法将它们正确添加到字典中;这是输出

dict_items([('fred\n', ['andrew', 'judy']), ('andrew', ['judy']), ('judy' ['george']), ('andrew\n', ['george']), ('george', ['john'])])

我想要的输出是

(Andrew[Fred])(Fred[])(judy[Andrew Fred])(George[Judy Fred])(john[george])

非常感谢任何帮助!


您可以使用collections.defaultdict() https://docs.python.org/3/library/collections.html#collections.defaultdict作为字典工厂,只需附加关注某人的用户,例如:

import collections

followers = collections.defaultdict(list)  # use a dict factory to save some time on checks
with open("path/to/your_file", "r") as f:  # open the file for reading
    for line in f:  # read the file line by line
        users = line.split()  # split on any white space
        followers[users[0]] += users[1:]  # append the followers for the current user

这将为您的数据生成:

{'andrew': ['fred'],
 'fred': [],
 'judy': ['andrew', 'fred'],
 'george': ['judy', 'andrew'],
 'john': ['george']}

这还允许您在重复记录上附加多个列表给用户 - 否则您可以只使用普通的dict for followers并将它们设置为followers[users[0]] = users[1:].

您作为所需输出显示的数据结构不是有效的 Python,您真的希望以这种方式呈现吗?我的意思是,如果你坚持的话,你可以这样做:

print("".join("({}[{}])".format(k, " ".join(v)) for k, v in followers.items()))
# (andrew[fred])(fred[])(judy[andrew fred])(george[judy andrew])(john[george])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从文件中的每一行创建一个字典 的相关文章

随机推荐

  • 将 Angular 2 应用程序部署到 AWS Elastic Beanstalk 中

    我现在正在使用 Angular 2 开发一个前端应用程序 该 id 用于与部署在云中的另一个微服务进行通信 在此 Angular 2 应用程序中 我没有使用数据库交互 我需要在 elastic beanstalk AWS PaaS 中部署这
  • 遍历继承层次结构的 static_cast 与dynamic_cast

    我看到一本关于 C 的书提到 使用静态强制转换来导航继承层次结构比使用动态强制转换更有效 Example include
  • 使用 ctree 显示每个节点的体积,在 R 中绘图

    任何人都可以告诉我如何在每个节点中添加体积 而不是最终的节点体积 t lt ctree is return a b c plot t type simple 我的树看起来像 我如何修改该图 使其在每个圆形节点上显示 N 而不仅仅是黑色或最终
  • 为什么 LEFT JOIN 与 WHERE 子句一起使用时不返回 NULL 记录? [复制]

    这个问题在这里已经有答案了 今天我尝试了一些更复杂的 MySQL 查询 我注意到 MySQL 的 LEFT JOIN 不适用于 WHERE 子句 我的意思是 它确实返回一些记录 但不会返回右侧为空的记录 例如 假设我们有表 albums a
  • 了解:从 PHP 数组到 Python?

    这是 PHP 和其他编程语言中的常见任务 我从 PHP 开发人员转过来 我想通过这个收藏来确定一下 任何精通Python的人请帮助我清楚地理解 这是我从 PHP 代码中收集的 gt Python 里有什么 gt Python 里有什么
  • Angular 2 测试 - process.env

    我尝试在应用程序中模拟请求 但流程变量存在问题 我将后端 API 的 URL 存储在 process env backend Url 中 然后在休息服务中我有 constructor private http Http this rest
  • 将 char* 复制到 char*

    这是我的代码的一部分 extern C REGISTRATION API int extreme char lKey string s1 char p NULL try ifstream myfile extreme txt int i 0
  • Android在没有edittext视图的情况下捕获硬件键盘事件

    如何在不使用 EditText 字段的情况下捕获硬件键盘事件 例如 在一个简单的活动中 在屏幕上显示一个正方形 当在滑动键盘上按下 B 时 我想将其变为蓝色 当按下 G 时 将其变为绿色 等等 我不需要颜色代码的帮助 只需要如何拦截按键 这
  • 修改后的 baugh-wooley 算法乘法 verilog 代码不能正确乘法

    以下 verilog 源代码和 或测试平台可以很好地工作商业模拟器 iverilog https www edaplayground com x 3TuQ也形式化验证工具 yosys smtbmc https gist github com
  • ASP 服务器端代码如何损坏智能引用?

    我的公司刚刚将许多列从 varchar 转换为 nvarchar 现在看来 当我们将智能引号 即 ALT 0146 渲染到屏幕上 然后将其发送回 SQL Server 2000 数据库进行持久化时 智能引号会被损坏为 我的问题 ASP 服务
  • Paypal IPN 响应无法进入 Android 移动浏览器

    我是 Paypal 集成的新手 我正在尝试为我的 Android 应用程序实现 Paypal IPN 为了使其正常工作 我创建了一个网页 使用 PHP 并发送到 Paypal 沙箱帐户 方法 GET 以便我进行付款 我正在从中获取付款状态
  • 如何在C#中使用C++ DLL导出的接口指针

    我有一个用 C 编写的 DLL 它导出一个函数 CreateRisk 该函数返回一个接口指针 如下 extern C declspec dllexport IRisk stdcall CreateRisk return new Risk I
  • Sweet Alert 带有 href 的删除确认

    我使用 PHP 和 Sweet Alert 进行删除确认 问题是它在显示甜蜜警报之前就被删除了 这是我的 HTML 其中使用 PHP div class delete a href i class far fa trash alt i a
  • 值构造函数的别名

    是否可以为值构造函数定义别名 上下文是这样的 我正在编写一个程序 它将原始递归函数实现为图灵机 为此 我正在使用一元整数编码 我的图灵机类型定义如下 definition of a Turing machine data TuringMac
  • WSFederationAuthenticationModule v/s SessionAuthenticationModule

    根据文档 这两个模块都将用于创建 IClaimsPrincipal 的实例 我不明白为什么 WIF 费心使用 2 个 HttpModules 而不是 1 个 抱歉 我是 WIF 新人 最大的区别在于 WSFederationAuthenti
  • 禁用 JShell 历史记录

    默认情况下 JShell 启用所有键入内容的持久历史记录 可以通过按向上箭头来调用 关闭此 功能 的设置在哪里 另外 我如何清除当前历史记录 也许我比较笨 但是我不明白这个命令 reset似乎什么也没做 另外 我如何清除当前历史记录 我提出
  • 为什么用Java VisualVM监控Tomcat时堆空间不断增大?

    我有一个在 Tomcat 中运行的 JRubyOnRails 应用程序 浏览到我的应用程序 localhost 登录然后什么都不做后 堆空间似乎在不断增长 这正常吗 如果我按 执行 GC 它会再次下降 我想知道如果我将其保留到其达到计算机
  • Findbugs android gradle 插件

    我有一个安卓项目 我想介绍findbugs在我的项目中作为 gradle 插件 我尝试编辑项目的build gradle如下 buildscript repositories mavenCentral maven url https mav
  • Intent.EXTRA_EMAIL 未填充“收件人”字段

    我正在尝试使用intent questions tagged intent从我的应用程序发送电子邮件 但电子邮件的 收件人 字段不会填充 如果我添加代码来填写主题或文本 它们就可以正常工作 仅 收件人 字段不会填充 我也尝试将类型更改为 t
  • 从文件中的每一行创建一个字典

    我正在尝试从这个文件创建一个字典 键是第一个单词 值是后面的所有单词 andrew fred fred judy andrew fred george judy andrew john george 这是我的代码 follows file