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()