【问题标题】:LinkedList in PythonPython中的链表
【发布时间】:2016-07-04 14:57:07
【问题描述】:

我正在寻找以下问题的解决方案。我有一个用 Pandas 读取的 Excel 文件。 A 列包含一个标识符,B 列也包含 Identiers,但 B 列中的标识符链接到 A 列中的标识符。示例:

+----------+----------+ | Column A | Column B | +----------+----------+ | ID1 | ID5 | +----------+----------+ | ID1 | ID6 | +----------+----------+ | ID1 | ID7 | +----------+----------+ | ID2 | ID8 | +----------+----------+ | ID2 | ID9 | +----------+----------+ | ID3 | ID8 | +----------+----------+ | ID3 | ID9 | +----------+----------+ | ID3 | ID10 | +----------+----------+ | ID3 | ID11 | +----------+----------+

所以现在我想将 ID1 链接到 ID5、ID6 和 ID7。 ID2 链接到 ID8、ID9 等

在 Java 中我会使用链表。我应该在 Python 中使用什么?

谢谢!

【问题讨论】:

  • 不太确定您要在这里实现什么。你可以再详细一点吗?或许举一个您将使用的 Java 代码示例,这里的人们可以在 Python 中找到等效的代码?
  • 你可以在 python 中创建一个 LinkedList。然而,在我看来,dict 似乎是最自然的方式。 Python 内置了对它们的支持。查找它们
  • 这不是一个链表,在 Java 或任何其他语言中。似乎是一个映射。
  • 你可以有很多方法。 dict 将是最简单但最不强大的方法。数据库将是最复杂但最强大的。一个健康的中间地带可能是一个类,它有一个名称和对另一个相同类型的类的引用。
  • 使用字典 = { "ID1" : ["ID5","ID6","ID7"], "ID2" : ["ID8", "ID9"] };字典["ID1"] .append("ID9999")

标签: python python-3.x


【解决方案1】:

也许是一个带集合的默认字典?

from collections import defaultdict
ident_pair_dict = defaultdict(set)

for ind, row in df.iterrows(): # df is the pandas dataframe you read
    ident_pair_dict[row['Column A']].add(row['Column B'])

【讨论】:

    【解决方案2】:

    由于你是用pandas来阅读的,所以可以用pandas的方法来构造字典:

    df.groupby('Column A')['Column B'].agg(lambda x: list(x)).to_dict()
    Out[42]: 
    {'ID1': ['ID5', 'ID6', 'ID7'],
     'ID2': ['ID8', 'ID9'],
     'ID3': ['ID8', 'ID9', 'ID10', 'ID11']}
    

    【讨论】:

      【解决方案3】:

      试试这个:

      dict(df.groupby('Column A')['Column B'].apply(list))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-17
        • 2018-03-30
        • 2018-04-02
        • 2013-10-13
        • 2020-06-13
        • 2019-03-13
        • 1970-01-01
        相关资源
        最近更新 更多