python中与列表和字典的关系
我正在通过Zed A Shaw的“艰苦学习python”学习python 我现在被这个问题弄糊涂了 创建一些新的关系,这些关系是列表和字典,这样您也可以拥有“有很多”关系 谁能解释一下,给我举几个例子吗 编辑 这是链接 X到Y的关系通常意味着X中的每个元素都与Y中的许多(零个或多个)元素相关联。因此,您可以构建一个字典,将X中的元素映射到Y的列表 例如,如果我们想知道一个人(X)拥有什么(Y):python中与列表和字典的关系,python,python-2.7,class,object,Python,Python 2.7,Class,Object,我正在通过Zed A Shaw的“艰苦学习python”学习python 我现在被这个问题弄糊涂了 创建一些新的关系,这些关系是列表和字典,这样您也可以拥有“有很多”关系 谁能解释一下,给我举几个例子吗 编辑 这是链接 X到Y的关系通常意味着X中的每个元素都与Y中的许多(零个或多个)元素相关联。因此,您可以构建一个字典,将X中的元素映射到Y的列表 例如,如果我们想知道一个人(X)拥有什么(Y): 爱丽丝有一台笔记本电脑和一所房子。(2) 鲍勃只有一个游戏机,(3)克里斯有一匹小马,(4)浮游生物
爱丽丝有一台笔记本电脑和一所房子。(2) 鲍勃只有一个游戏机,(3)克里斯有一匹小马,(4)浮游生物一无所有。当然;我教过编程,包括这些材料。每个字典条目都包含一个值列表,而不仅仅是一个值。例如:
Children =
{"Marianne": ["Eduardo", "Shibani", "Ted",
"Stephan": ["Marianne"],
"Ted": ["Winken", "Blinken", "Nod"]
}
这是一个简单的父母列表,列出了每个孩子的名字。在这种情况下,您还可以编写代码来查看家谱的一部分:Stephan是Ted和另外两个孩子的祖父。要上下文化:
在本书的练习42中,我们将以艰苦的方式学习Python,学习类和对象。
autor-Zed Shaw给了我们下面的代码,我们必须对类和对象进行注释。
当我们谈论对象和类通过类关系相互关联时,必须使用“is-a”。当我们谈论仅仅因为相互“引用”而相关的对象和类时,我们使用“has-a”
因此,代码和我的评论:
## Animal is-a object
class Animal(object):
pass
## Dog is-a Animal
class Dog(Animal):
def __init__(self,name):
## Dog has-a name
self.name = name
## Cat is-a Animal
class Cat(Animal):
def __init__(self, name):
## Cat has-a name
self.name = name
## Person is-a object
class Person(object):
def __init__(self, name):
## Person has-a name
self.name = name
## Person has-a pet of some kind
self.pet = None
## Employee is-a Person
class Employee(Person):
def __init__(self, name, salary):
## Employee has-a name (coming from Person, because Employee is-a Person)
super(Employee, self).__init__(name)
## Employee has-a salary
self.salary = salary
## Fish is-a object
class Fish(object):
pass
## Salmon is-a Fish
class Salmon(Fish):
pass
## Kalibut is-a Fish:
class Halibut(Fish):
pass
## Rover is-a Dog
rover = Dog("Rover")
## Satan is-a Cat
satan = Cat("Satan")
## Mary is-a Person
mary = Person("Mary")
## Mary has-a pet "Satan"
mary.pet = satan
# Frank is-a Employee that has-a salary
frank = Employee("Frank", 120000)
## Frank has-a pet "Rover"
frank.pet = rover
## flipper is-a fish
flipper = Fish()
## crouse is-a Salmon
crouse = Salmon()
## harry is-a Halibut
harry = Halibut
在其中一个研究练习中,自动告诉我们“建立一些新的关系,如列表和字典,这样你也可以拥有”有很多“关系”
例如:
## Mary is-a Person
mary = Person("Mary")
## Mary has-a pet "Santan"
mary.pet = santan
但是玛丽可以养不止一只宠物,对吗?因此:
## Mary has-many pets: "Santan" and "Rover"
mary.pet = [santan, rover] # has-many with list
或者,您可以使用字典,因此:
## Mary has-many pets: Satan (is-a cat) and rover (is a dog)
mary.pet = {'cat': satan, 'dog': rover} # has-many with dictionary
现在每个人都能理解问题的上下文。如果你能发布一个链接,我们会发现字典通常可以表示一种“关系”,其中一个
键
映射到一个值
,这将对你大有帮助。如果字典
有一个或多个键
,每个键映射到一个列表
,其中包含多个值
,则“has many”关系可能会起作用–1仅用于使用LPTHW@wim尽管你的声望高得离谱,但我不认为不喜欢教材是否决这个问题的正当理由(即使只是一个笑话)。@wim好吧,也许你可以解释为什么你不喜欢LPTHW作为教材。我确实同意有比LPTHW好得多的书,但这并不能真正帮助OP投反对票。“克里斯什么都没有。”-可怜的我:-(@ChristianDean:我给了你一匹小马。快乐?:),但小马会这样做:-)出于好奇:“本材料”指的是“一对多通信”还是“艰苦学习python”?是“一对多”:父母(dict键)是“一”;孩子们(dict值,如列表)是“许多人”。“对于正在阅读这本书的人来说,也许会更容易理解”也许会包括更多,这样人们就不会迷路?什么是santan
和rover
?你现在在想什么?我试图给出一个好的背景,展示这本书给了我们什么,它要求我们什么。是的,更清楚!那么代码是从源代码中获取的,您刚刚添加了注释?我得说这看起来很奇怪。如果我们遵循它,鱼不是动物,因此不能有名称^^^’……是的,代码是给我们的,我们只是添加注释。我不认为代码是功能性的,也许autor只是想告诉我们,在python的代码中,带有(object)的类是正常的。但当然,鱼也可以是动物,因此有了名字。
## Mary has-many pets: Satan (is-a cat) and rover (is a dog)
mary.pet = {'cat': satan, 'dog': rover} # has-many with dictionary