使用Python创建家谱

2024-10-01 09:40:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近开始使用python,并正在使用python构建一个家谱树。我的想法是这棵树应该两边都长,也就是说,老一辈和年轻一代都可以加到同一棵树上。在

我尝试用二叉树ADT和N元树ADT来实现,但效果并不理想。有谁能给我一个最适合建立家谱的ADT,并指导我如何实现它?在


Tags: 指导理想家谱效果二叉树adt老一辈年轻一代
2条回答

如果你看看应用程序“longlines”、GEDCOM文件格式(不是XML版本)和其他家谱软件,它会为每个人和每个家庭单元创建一个唯一的记录,然后使用这些记录的ID来创建对家庭成员和子女的符号引用。在

如果你看一下这个GEDCOM记录,它可以识别一个id为“I25”的个人,他是家庭id F11的孩子(FAMC)和家庭F6和F12中的配偶(FAMS)。在

  0 @I25@ INDI
  1 NAME Thomas Trask /Wetmore/ Sr
  1 SEX M
  1 BIRT
    2 DATE 13 March 1866
    2 PLAC St. Mary's Bay, Digby, Nova Scotia
    2 SOUR Social Security application
  1 NATU
    2 NAME Thomas T. Wetmore
    2 DATE 26 October 1888
    2 PLAC Norwich, New London, Connecticut
    2 AGE 22 years
    2 COUR New London County Court of Common Pleas
    2 SOUR court record from National Archives
  1 OCCU Antiques Dealer
  1 DEAT
    2 NAME Thomas Trask Wetmore
    2 DATE 17 February 1947
    2 PLAC New London, New London, Connecticut
    2 AGE 80 years, 11 months, 4 days
    2 CAUS Heart Attack
    2 SOUR New London Death Records
  1 FAMC @F11@
  1 FAMS @F6@
  1 FAMS @F12@

人与人之间的关系远比用基本的树状数据结构来表示要复杂得多。在

经过大量的搜索,发现图ADT更适合上述问题。因为一个家庭在各个方面都有广泛的关系,所以使用图形ADT将是传统的。在

  • 每个节点都可以存储一个人的详细信息。在
  • 节点可以由父节点链接和一些功能组成 找出两个节点之间的关系等。。在
  • 若要查找关系,请假定父节点为父节点,然后 父节点的父节点作为祖父母等的父节点。。在
  • 遍历父节点,查找是否还有其他子节点, 将他们标记为兄弟姐妹等。。在

我的想法是这样的,我认为这将有助于解决这个问题!在

相关问题 更多 >