【问题标题】:Dynamically named sets or other method?动态命名集或其他方法?
【发布时间】:2013-07-08 13:46:01
【问题描述】:

首先感谢您花时间查看我的问题。与其简单地描述我必须解决的问题的解决方案,我认为最好也概述问题,以便能够提出替代解决方案的想法。很有可能有更好的方法来实现这个解决方案。

我遇到的问题:

我生成具有相关分数等级和其他相关值的名称列表,这些列表每天生成,但由于需要删除一些名称,因此必须随着时间的推移而更改。目前,这些名称列表是在基于 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 doc),这个列表是生成的通过每两分钟更新一次的网络爬虫。我目前认为可能解决这个问题的方法是使用一段代码,将 CSV 中的每个列表保存为 SET(如果可能的话),然后在找到唯一名称后将其从集合中删除/s,它们发生在哪里。

我对 python 论坛的问题是;

  1. 在生成多个唯一命名的 SET(每天最多 60 个)方面提出的方法是否可行
  2. 是否有更好的方法来达到相同的结果?

任何帮助或 cmets 将不胜感激

向 AEA 致敬

【问题讨论】:

  • 你为什么要全大写“设置”?您指的不是 Python 的内置 set 数据类型吗?
  • 不,我不是,很抱歉造成混乱,我已经编辑了这个问题。亲切的问候 AEA

标签: python python-2.7 dataset set


【解决方案1】:

您可能更容易使用字典而不是集合,因为字典与集合不同,它提供了一种将数据项与集合的每个成员相关联的自然方式。

这是一种方法,其中每个班级的数据存储在字典中,每个键是学生的姓名,其值是包含每个学生的分数等的列表:

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"]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 2013-07-27
    • 2018-05-06
    • 2013-02-20
    • 1970-01-01
    • 2016-10-27
    • 1970-01-01
    相关资源
    最近更新 更多