Python新手:创建一个空集

时间:2013-07-15 20:28:06

标签: python

我有一些代码可以设置一组选定的值。我想定义一个空集并添加到它,但{}不断变成字典。我发现如果我用虚拟值填充集合我可以使用它,但它不是很优雅。有人能告诉我这样做的正确方法吗?谢谢。

inversIndex = {'five': {1}, 'ten': {2}, 'twenty': {3},
               'two': {0, 1, 2}, 'eight': {2}, 'four': {1},
               'six': {1}, 'seven': {1}, 'three': {0, 2},
               'nine': {2}, 'twelve': {2}, 'zero': {0, 1, 3},
               'eleven': {2}, 'one': {0}}

query = ['four', 'two', 'three']

def orSearch(inverseIndex, query):
    b = [ inverseIndex[c] for c in query ]
    x = {'dummy'}
    for y in b:
        { x.add(z) for z in y }
    x.remove('dummy')
    return x

orSearch(inverseIndex, query)
  

{0,1,2}

4 个答案:

答案 0 :(得分:36)

你可以构建一个集合:

>>> s = set()

将完成这项工作。

答案 1 :(得分:5)

“正确”的方式:

myset = set()

{...}表示法不能用于初始化空集

答案 2 :(得分:3)

正如已经指出的那样 - 获取空set文字的方法是通过set(),但是,如果您重新编写代码,则无需担心这一点,例如: (并使用set()):

from operator import itemgetter
query = ['four', 'two', 'three']
result = set().union(*itemgetter(*query)(inversIndex))
# set([0, 1, 2])

答案 3 :(得分:1)

集合文字只是花括号中的值的元组

x = {2, 3, 5, 7}

因此,您可以使用大括号中的值的空元组创建一个空集:

x = {*()}

仍然,仅仅是因为您可以,并不意味着您应该

除非是混淆的程序设计,或者是每个字符都很重要的codegolf,否则我建议使用显式的x = set()

"Explicit is better than implicit."