Python集、键和字典
我要做的是向用户询问姓名,然后使用集合和键找出一个人在多少俱乐部。我还不熟悉字典和电视机,所以我有点不知道该怎么做。到目前为止,我有这个,但它不工作,并给我一个错误:Python集、键和字典,python,function,dictionary,set,key,Python,Function,Dictionary,Set,Key,我要做的是向用户询问姓名,然后使用集合和键找出一个人在多少俱乐部。我还不熟悉字典和电视机,所以我有点不知道该怎么做。到目前为止,我有这个,但它不工作,并给我一个错误: clubs = {'WSA': set(['Maria', 'Kennedy']), 'Reds': set(['Simon', 'Yamamoto']), 'Hikes': set(['Maria']), 'UVD': set(['Silver', 'Hasamov']) } def member(): name =
clubs = {'WSA': set(['Maria', 'Kennedy']), 'Reds': set(['Simon', 'Yamamoto']), 'Hikes': set(['Maria']), 'UVD': set(['Silver', 'Hasamov']) }
def member():
name = raw_input('Name ==> ')
i = 0
memset = set([])
nomemset = set([])
while i <= len(clubs.keys()):
for club in clubs:
if clubs[clubs.keys()[i]][i] == clubs[clubs.keys()[i+1]][i]:
memset.add(clubs.keys()[i])
memset.add(clubs.keys()[i+1])
else:
nomemset.add(clubs.keys()[i])
nomemset.add(clubs.keys()[i+1])
print 'Member of: ', memset
print 'Not member of: ', nomemset
member()
感谢您的帮助 你让事情变得更困难了。使用
for key in dict
迭代键,并dict[key]
获取键。
另外,要知道某个值
是否在集合
中,请使用if value in set
语法。然后,您的代码将变得更简单:
clubs = {'WSA': set(['Maria', 'Kennedy']), 'Reds': set(['Simon', 'Yamamoto']), 'Hikes': set(['Maria']), 'UVD': set(['Silver', 'Hasamov']) }
def member():
name = raw_input('Name ==> ')
i = 0
memset = set() #As recommended by TigerhawkT3
nomemset = set()
for (club, members) in clubs.items(): #As recommended by @DeGlopper
if name in members:
memset.add(club)
else:
nomemset.add(club)
print 'Member of: ', memset
print 'Not member of: ', nomemset
member()
您得到的错误是什么?在我看来,它将无限循环,因为您从未更改
i
。我不知道你想通过比较俱乐部的连续元素来做什么。keys()
-@RafaelCardoso的完全重写在我看来是正确的。小小的诡辩,你可以使用for俱乐部中的(俱乐部,成员)。items()
直接迭代键/值对。非常感谢!很好用!您可以使用set()
而不是set([])
来初始化空的set
。请注意@PeterDeGlopper@TigerhawkT3谢谢你的建议,我把它添加到代码中了!
clubs = {'WSA': set(['Maria', 'Kennedy']), 'Reds': set(['Simon', 'Yamamoto']), 'Hikes': set(['Maria']), 'UVD': set(['Silver', 'Hasamov']) }
def member():
name = raw_input('Name ==> ')
i = 0
memset = set() #As recommended by TigerhawkT3
nomemset = set()
for (club, members) in clubs.items(): #As recommended by @DeGlopper
if name in members:
memset.add(club)
else:
nomemset.add(club)
print 'Member of: ', memset
print 'Not member of: ', nomemset
member()