目的是创建一个facebook类型程序的开头(用于教学目的),该程序存储个人姓名列表及其生物详细信息。
我有两个问题,一个是下一个问题:
问题1 :如何获取列表值,它们是字典中键值对中值的一部分。例如,要找出约翰和玛丽的朋友有什么共同点,在这种情况下 friend1和friend3
问题2:创建存储姓名,性别,爱好和朋友的结构的最佳方法是什么?这是一本字典,如果是这样,怎么定义?如果没有,人们会建议什么?
#create a dictionary that stores names, and a list of friends
facebook_profile={"John":["friend1","friend2","friend3","friend4"],"Mary":["friend1","friend7","friend3","friend9"]}
print(facebook_profile)
需要存储并随后打印以下样本数据:
Name:John
Gender: Male
Hobbies: Chess
Friends: friend1,friend2,friend3,friend4
Name: Mary
Gender: Female
Hobbies: Chequers
Friends: friend1,friend2,friend3,friend4
我知道最好的解决方案是数据库,并使用某种文件处理来实现它,但是,出于教学目的,我们只尝试使用列表或词典。然后可以将这些词典/列表写入文件,但我想要的解决方案/答案最好只使用列表和字典结构。
答案 0 :(得分:0)
另一种方法是在数据库中存储表列和与该表具有多对多关系的表。
答案 1 :(得分:0)
对于问题1,一组是快速,轻松地计算交叉点的好选择。 对于问题2,字典效果很好。
例如:
facebook_profile={
"John":{"friends":{"friend1","friend2","friend3","friend4"},"Gender": "Male"},
"Mary":{"friends":{"friend1","friend7","friend3","friend9"},"Gender": "Female"}
}
mutual_friends = facebook_profile["John"]["friends"].intersection(facebook_profile["Mary"]["friends"])
print (mutual_friends)
提供输出:
{'friend1', 'friend3'}
答案 2 :(得分:0)
编辑您编辑的答案仅表明您想要列表和字典,所以也许这不适合您,但是,类是实现复杂类似重复对象信息存储的最佳方式许多功能,所以我会把它留在这里
随着这变得越来越复杂,嵌套的词典可能是一个真正的头痛,我建议你定义一个class
,如下所示:
class Person()
def __init__(self, name, gender):
self.name = name
self.gender = gender
对于该课程,您可以定义各种方法,例如寻找共同的朋友:
class Person()
def __init__(self, name, gender):
self.name = name
self.gender = gender
self.friends = []
self.hobbies = []
def add_friends(self, list_of_friends):
self.friends += list_of_friends
def add_hobbies(self, list_of_hobbies):
self.hobbies += list_of_hobbies
def mutual_friends(self, another_person):
return list(set(another_person.friends).intersection(self.friends))
然后你所要做的就是初始化每个朋友并开始运行各种方法
john = Person('John', 'Male')
john.add_friends(['friend1', 'friend2', ...]
mary = Person('Mary', 'Female')
mary.add_friends(['friend3', 'friend7', ...]
common_friends = john.mutual_friends(mary)
print(common_friends) # Will print a list of mutual friends
和其他人一样,对于长篇朋友列表,更有效的方法是set
使用intersection
答案 3 :(得分:0)
创建一个类:
class Person:
def __init__(self, name, gender, hobbies, friends):
self.name = name
self.gender = gender
self.hobbies = hobbies
self.friends = friends
def getMutualFriends(self, personB):
return list(set(personB.friends).intersection(self.friends))
person1 = Person('John', 'male', ['Chess'], ['friend1', 'friend2'])
person2 = Person('Anna', 'female', ['Soccer'], ['friend1', 'friend3'])
print(person1.getMutualFriends(person2))