动态命名集,或替代建议方法?

时间:2013-07-27 19:58:30

标签: python list dynamic python-2.7 set

首先感谢您抽出宝贵时间来研究我的问题。我不是简单地描述我必须解决的问题的解决方案,而是最好概述问题,以便能够提出替代解决方案的想法。很可能有更好的方法来实现这个解决方案。

我遇到的问题:

我生成具有相关分数排名和其他相关值的名称列表,这些列表每天生成,但由于需要删除某些名称而必须随着日期的进展而变化。目前,这些名称列表是在基于excel的表格上生成的,其中包含以下格式的以下数据类型;

(Unique List Title)
(Unique Name in list),(Rank),(Score),(Calculated Numeric Value),(non unique filter)
(Unique Name in list),(Rank),(Score),(Calculated Numeric Value),(non unique filter)
(Unique Name in list),(Rank),(Score),(Calculated Numeric Value),(non unique filter)

(Unique List Title)
(Unique Name in list),(Rank),(Score),(Calculated Numeric Value),(non unique filter)
(Unique Name in list),(Rank),(Score),(Calculated Numeric Value),(non unique filter)
(Unique Name in list),(Rank),(Score),(Calculated Numeric Value),(non unique filter)
(Unique Name in list),(Rank),(Score),(Calculated Numeric Value),(non unique filter)

例如;

Mrs Dodgsons class
Rosie,1,123.8,5,Lincoln University
James,2,122.6,7,Lincoln University
Chris,3,120.4,12,Lincoln University
Douglas,4,120.2,18,Lincoln University

Dr Clements class
Hannah,1,126.9,2.56,Durham University
Gill,2,124.54,6.89,Durham University
Jack,3,122.04,15.62,Durham University
Jamie,4,121.09,20.91,Durham University
Douglas,4,120.2,18,Durham University

现在我拥有的是一个单独的用户列表及其相关的“非唯一过滤器”,他们需要从上面的excel生成列表中删除(不要担心这个小项目的最终产品不是重新保存修改excel doc),这个列表是通过web scraper生成的,每两分钟更新一次。我目前认为这个问题的潜在可行解决方案是使用一段代码将CSV中的每个列表保存为SET(如果可能的话),然后在找到唯一名称/非唯一过滤器组合时,它将会从发生它们的SET / S中删除它们。

例如,如果道格拉斯,杜伦大学在此列表中返回,那么两个定义的集合中的第二个将看到道格拉斯被删除。在其中两个集中出现唯一用户名的情况下,其中一个将始终显示在要与其关联的大学一起删除的用户列表中(因此我们可以识别要从中移除用户的集。)但请注意要删除的用户并不总是一次出现在两个集合中,例如“Rosie,Lincoln University”可以很容易地出现在要删除的用户列表中。

我之前在python论坛上提出了一个非常类似的问题,但是我在问题的方式上犯了一些错误,我想要实现的是什么,而不是在我启动的旧线程上混淆问题这里有一个新线程。在旧的主题上,有一些关于这个问题的一般性问题,我将在这里回答,以便提供一些澄清。

Q1所以第一个列表每天只生成一次,在那天之后会发生什么,是丢弃,存储,替换等等。

A1我的直觉是,它应该作为一个简单的.txt .csv或类似文件保存到文件夹中,如果仅用于调试日志。

Q2每隔两分钟,第一个列表需要更改,更改列表会发生什么,需要了解它,是存储还是仅在某些内存状态下更改等。

A2此代码的最终目的是生成一个包含用户统计信息的RSS,其中一些统计信息包括(Rank)& (计算的数值)。排名是自我解释,关于如何由于用户被删除而改变。然而,(计算的数值)是从一个方程导出的,该方程使用每个列表的(得分)和的总和以及所述列表中的用户数。因此,在回答原始问题时,列表需要以某种方式存储。

Q3每个类别的名称是唯一的,或者在整个数据中是唯一的。

A3名称在整个数据中是唯一的,即用户道格拉斯将始终引用道格拉斯,如果用户出现在多个类中,则它将始终显示在要删除的用户列表中。

Q4如果名字是唯一的,那么当两个人在同一个班级中有相同的名字时,会发生这种情况。

A4在这个例子中,同一个类中的多个用户似乎可以使用相同的名称,但实际上它不可能发生。

我对堆栈溢出的问题是;

  1. 是关于生成多个唯一命名的SET(每天最多60个)的可行方法
  2. 有更好的方法可以达到相同的效果吗?
  3. 非常感谢任何帮助或评论

    最好的问候AEA

1 个答案:

答案 0 :(得分:1)

不,我认为您不能将每个csv文件中的数据转换为set而不会丢失数据。您可以通过将它们转换为由(user, non-unique filter)元组键入的字典来避免这种情况,该元组与包含csv相应行中所有其他数量的列表值相关联。

要更新这些词典,您只需删除其中存在的任何条目,这些条目与您需要删除的用户的单独用户列表上的任何条目相匹配。

如果您不确定如何做其中任何一项,请随时提出另一个问题。