首先感谢您抽出宝贵时间来研究我的问题。我不是简单地描述我必须解决的问题的解决方案,而是最好概述问题,以便能够提出替代解决方案的想法。很可能有更好的方法来实现这个解决方案。
我遇到的问题:
我生成具有相关分数排名和其他相关值的名称列表,这些列表每天生成,但由于需要删除某些名称而必须随着日期的进展而变化。目前,这些名称列表是在基于excel的表格上生成的,其中包含以下格式的以下数据类型;
(Unique List Title)
(Unique Name in list),(Rank),(Score),(Calculated Numeric Value)
(Unique Name in list),(Rank),(Score),(Calculated Numeric Value)
(Unique Name in list),(Rank),(Score),(Calculated Numeric Value)
(Unique List Title)
(Unique Name in list),(Rank),(Score),(Calculated Numeric Value)
(Unique Name in list),(Rank),(Score),(Calculated Numeric Value)
(Unique Name in list),(Rank),(Score),(Calculated Numeric Value)
(Unique Name in list),(Rank),(Score),(Calculated Numeric Value)
例如;
Mrs Dodgsons class
Rosie,1,123.8,5
James,2,122.6,7
Chris,3,120.4,12
Dr Clements class
Hannah,1,126.9,2.56
Gill,2,124.54,6.89
Jack,3,122.04,15.62
Jamie,4,121.09,20.91
现在我所拥有的是一个单独的用户列表,需要从上面的excel生成列表中删除(不要担心这个小项目的最终产品不是重新保存修改后的excel文档),这个列表是生成的通过网络刮板,每两分钟更新一次。我目前认为这个问题的潜在可行解决方案是使用一段代码将CSV中的每个列表保存为SET(如果可能的话),然后在找到唯一名称后,它将从集合中删除它们它们出现的时间。
我对python论坛的问题是;
非常感谢任何帮助或评论
最好的问候AEA
答案 0 :(得分:3)
使用字典而不是集合可能更容易,因为与集合不同,字典提供了一种将数据项与集合的每个成员相关联的自然方式。
这是一种方法,其中每个类的数据存储在字典中,每个字的键都是学生的名字,其值是带有分数的列表等。 ,每个学生:
data = {
"Mrs Dodgson": {
"Rosie": [1,123.8,5],
"James": [2,122.6,7],
"Chris": [3,120.4,12]
},
"Dr Clement": {
"Hannah": [1,126.9,2.56],
"Gill": [2,124.54,6.89],
"Jack": [3,122.04,15.62],
"Jamie": [4,121.09,20.91]
}
}
to_remove = ["Jamie", "Rosie"]
# Mrs. Dodgson's class data, initially.
print data["Mrs Dodgson"]
# Now remove the student data.
for cls_data in data.values():
for student in to_remove:
try:
del cls_data[student]
except KeyError:
pass
print data["Mrs Dodgson"]