在循环中追加到字典值列表

2023-12-01

我有一些代码,其中使用名称列表和结果文件(最终是多个文件)(团队、名称、地点)。我正在寻找的最终结果是将每个人的姓名(键)与点(值)列表相关联。但是,当我使用下面的代码时,我最终得到的结果如下

'Abe': [100, 80, 90], 'Bob': [100, 80, 90], 'Cam': [100, 80, 90] 而不是

“阿部”:[100],“鲍勃”:[80],“卡姆”:[90]

f=open("NamesList.txt","r")
lines=f.read().splitlines() #get names
Scores=dict.fromkeys(lines,[]) #make a dictionary with names as keys, but no values yet

f1=open("ResultsTest.txt","r") #open results file: column1-team, column 2- name, column 3-place
lines=f1.read().splitlines()

A={1:100,2:90,3:80} #points assignment, 100 for 1, 90 for 2, 80 for 3 
for l in lines:
    a=l.split('\t') #a[0] is team a[1] is name a[2] is place
    score=A.get(int(a[2]))   #look up points value corresponding to placing     
    Scores[a[1]].append(score)

我可以通过添加得到我需要的结果

 Scores[a[1]]=[]

在倒数第二行之前,但我相信这会阻止我最终能够向每个键附加多个分数(因为我在循环内重新初始化)。任何对我的错误的见解将不胜感激。


通过使用Scores=dict.fromkeys(lines,[])您正在使用对同一列表的引用来初始化字典的每个键,因此对列表所做的更改会反映在所有键上。您可以使用字典理解来代替初始化:

Scores = {line: [] for line in lines}

或者,您可以初始化Scores作为一个普通的字典{}并使用dict.setdefault方法用列表初始化其键:

Scores.setdefault(a[1], []).append(score)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在循环中追加到字典值列表 的相关文章

随机推荐

  • Stream 的复用是否是流的副本

    例如 有一个带密钥的流 val keyedStream KeyedStream event Key env addSource keyBy several transformations on the same stream keyedSt
  • 无法理解输出的原因

    我正在运行一个代码片段 但我无法理解代码及其产生的输出 include
  • 使用 HTTPS 的 HttpGet:SSLPeerUnverifiedException

    Using Http客户端 当我尝试通过 HTTPS 进行通信时收到以下错误 线程 main 中出现异常 javax net ssl SSLPeerUnverifiedException 对等点未经过身份验证 这是我的代码 URI logi
  • javafx,如何实现confirmHandler?

    我正在使用 javafx 的网络引擎来显示网页 在页面上 有一个脚本调用window confirm 我已经知道如何设置确认处理程序以及如何显示类似模式的对话框 我的问题是如何在处理程序返回之前获得用户的选择 webEngine setCo
  • JSF 2:ajax 调用后页面重定向

    我陷入了类似的导航案例问题this一 简而言之 我正在尝试使用 ajax 渲染将导航从一个页面重定向到另一个页面h commandLink 这是支持 bean ManagedBean public class StartBean publi
  • OffscreenCanvas 无法克隆,因为它已分离

    昨天又回到了我对 HTML canvas 的爱好 并尝试在单独的线程中进行渲染 只是在控制台中面临以下错误 未捕获的 DOMException 无法在 Worker 上执行 postMessage 无法克隆 OffscreenCanvas
  • AppStore语言描述和“本地化原生开发区域”

    一款以三种语言 英语 意大利语和西班牙语 本地化的 iPhone 应用程序已提交至 AppStore 并附有三种语言的说明和屏幕截图 结果是 在 AppStore USA 中有英语描述 在 AppStore Spain 有西班牙语描述 在
  • 观察 UITableView 中的捏合多点触控手势

    我正在寻找在 UITableView 之上实现捏入 捏出 我已经研究了几种方法 包括这个 类似问题 但是虽然我可以创建一个UIViewTouch对象并将其覆盖到我的 UITableView 上 滚动事件不会转发到我的 UITableView
  • 关于Apple的KMLViewer placemarkDescription和注释字幕

    在我的应用程序中 我使用 Apple 的 KMLViewer 来显示从 KML 文件获取的注释 在文件 KMLParser m 中 有一个实例变量 placemarkDescription它将描述标签下的信息从 kml 文件转换为注释副标题
  • 将 `.klib` 库添加到 kotlin 多平台

    我想知道如何将我的 cinterop ted 库导入到 kotlin 多平台构建的 gradle 构建中 我已经创建了library def文件并填充它 我还生成了library klib以及随之而来的文件夹 我只是不明白如何将其导入到gr
  • 名称为 char[] 的变量

    如何在 C 中使用 char 表中指定的名称创建变量 就像是 char name gets name int name 0 我希望你明白我的意思 C 与您可能习惯的 Python 或 Ruby 等脚本语言不同 C 是编译而不是解释的 在运行
  • 使用replaceall输出错误

    为什么我从以下代码中得到 AAAAAAAAA 而不是 1A234A567 String myst 1 234 567 String test myst replaceAll A System out println test 任何想法 尝试
  • Android 文档中没有关于 RecyclerView 和 StaggeredGridLayoutManager 的好例子

    我找不到更好的使用示例RecyclerView with StaggeredGridLayoutManager 甚至不在安卓文档 Q1 我需要一些例子来正确解释如何使用RecyclerView with StaggeredGridLayou
  • Integer.class 和 Integer.TYPE 之间的区别[重复]

    这个问题在这里已经有答案了 这两者有什么区别 原始类型不能有 类 可以吗 它是原始类型 没有对象可以有类 这两者有什么区别呢 我不确定你的意思 但是 AClass对象是类型的运行时代表 也就是说 有这样的事情int class这不同于Int
  • 为什么 sbt 在设置 $JAVA_HOME 时报告“未检测到 java 安装”?

    我有 2 个 sbt android scala 项目 第一个是单个的 ls al drwxr xr x 13 alex staff 442 Dec 24 20 44 drwxr xr x 4 alex staff 136 Dec 24 2
  • JMS 消耗多个主题

    我是 Java 新手 正在开发一个使用多个 不同 主题并将其发送到另一台服务器的项目 我想知道处理多个主题的最佳方法是什么 据我了解 每个消费者都与一个主题相关 因此 如果我必须使用多个主题 则每个不同的主题都需要一个消费者 由于消费者进行
  • 如何修复一些 Xcode 13 错误,例如无法正确跳转到定义?

    我最近更新到 Xcode 13 突然 显示代码操作 中的选项不再起作用 这包括 跳转到定义 显示快速帮助 甚至突出显示所有使用某些规范的地方 有人遇到同样的问题或有解决办法吗 我已经尝试关闭应用程序 重新启动计算机 清理构建文件夹 但没有任
  • 在 Javascript 中将所有复选框值作为数组传递

    我有以下复选框 我需要将它们作为数组值获取
  • 防止弹性项目超过父级高度并使滚动条工作

    如何防止子div带有滚动条和flex 1超过 Firefox 中其父级 Flexbox 的高度 它在 Chrome 中工作正常 CodePen 链接 如果您更喜欢它而不是 Stack Overflow 片段 https codepen io
  • 在循环中追加到字典值列表

    我有一些代码 其中使用名称列表和结果文件 最终是多个文件 团队 名称 地点 我正在寻找的最终结果是将每个人的姓名 键 与点 值 列表相关联 但是 当我使用下面的代码时 我最终得到的结果如下 Abe 100 80 90 Bob 100 80