【问题标题】:Python Sets, Keys, and DictionariesPython 集、键和字典
【发布时间】:2015-07-10 20:05:05
【问题描述】:

我正在尝试做的是询问用户一个名字,然后使用集合和键找出一个人在多少个俱乐部。我还是字典和集合的新手,所以我对如何去做这件事有点困惑。到目前为止,我有这个,但它不起作用并给我一个错误:

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

示例输出如下:

Name ==> Maria
Member of: set(['WSA', 'Hikes'])
Not member of: set(['Reds', 'UVD'])

感谢任何帮助!

【问题讨论】:

  • 你得到的错误是什么?
  • 在我看来它会无限循环,因为你永远不会改变i。我不确定你想通过比较clubs.keys() 的连续元素来做什么 - @RafaelCardoso 的完全重写看起来对我来说是正确的。

标签: python function dictionary set key


【解决方案1】:

你让事情变得比现在更困难。使用

for key in dict

遍历键,dict[key] 获取键。 此外,要知道某些value 是否在set 中,请使用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()

【讨论】:

  • 小问题,您可以使用for (club, members) in clubs.items() 直接遍历键/值对。
  • 非常感谢!完美运行!
  • 你可以用set()而不是set([])来初始化一个空的set
  • 好消息@PeterDeGlopper
  • @TigerhawkT3 感谢您的建议,我已将其添加到代码中!
猜你喜欢
  • 2012-06-24
  • 1970-01-01
  • 1970-01-01
  • 2015-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-05
相关资源
最近更新 更多