【问题标题】:Converting list of list to dictionaries with calculated field将列表列表转换为具有计算字段的字典
【发布时间】:2015-10-07 03:29:14
【问题描述】:
['1', 'james', '1', '90\n']
['1', 'james', '2', '78\n']
['1', 'james', '3', '87\n']
['1', 'james', '4', '98\n']
['2', 'alice', '1', '95\n']
['2', 'alice', '2', '91\n']
['2', 'alice', '3', '100\n']
['2', 'alice', '4', '98\n']

基本上,这就是我所拥有的。从文本文件中读取的一堆列表。 我正在尝试找出一个将类似内容输出到此控制台的函数。

1, james: 88.65 (this number is weigh-adjusted mark for all assignments)
                       *Weight for each assignment 0.2, 0.25, 0.25, 0.3
2, alice: 96.15

参数分别为学号、姓名、作业#和分数。 每个人在每个作业的文本文件中至少有四行# 因为我是 Python 新手,所以我这样做是为了自学。 非常感谢在这种情况下的任何帮助。我似乎无法从在线教程中找到任何提示

【问题讨论】:

  • 所以这些列表是对象还是字符串?
  • 致 OP:到目前为止,您尝试过什么?对于这里的很多人来说,这个问题很容易回答,但请不要回答。让 OP 表现出一些努力。
  • 我对文本文件进行了操作,使其显示为字符串列表
  • 既然你是自学的,那么把你试过的代码贴出来怎么样。你会从中学到更多,而不是把答案放在盘子里。
  • 您需要按学生对分数进行分组,然后计算加权分数的总和。您可以使用collection.defaultdict(float)collection.groupby() 轻松完成此操作,尽管前者可能更易于使用并且不需要排序数据。

标签: python


【解决方案1】:

由于您问的是如何进行,而不是实际的代码,这里有一些关于如何解决问题的建议:

  1. 使用 Python 的 with 语句打开您的文本文件。
  2. 使用csv 模块从文件中加载数据。这将为您提供您拥有的列表,每行一个,并且还意味着最终条目不包括 \n
  3. itertools.groupby 函数与 csv 阅读器一起使用,并根据第一个条目返回一个密钥 kg,其中 k 是密钥(例如 1)和 @987654332 @ 是一个迭代器,为您提供匹配 1 的条目列表。
  4. 您可以调查列表推导,然后将这些匹配行转换为包含加权输出的列表。
  5. 然后您可以使用列表中的sum 来产生您的价值。
  6. 然后您就拥有了打印一行输出的所有数据。

【讨论】:

    猜你喜欢
    • 2017-04-23
    • 2021-10-13
    • 1970-01-01
    • 2015-07-23
    • 2014-01-20
    • 2020-05-23
    • 2019-06-11
    相关资源
    最近更新 更多