创建没有值部分的字典?

时间:2013-11-26 00:13:35

标签: python

我正在阅读包含课程的文件。我想用类作为键创建一个字典,所以我可以将它与另一个更具体的字典进行比较。我可以这样做作为一个列表,但通过列表中的每个项目并将其与字典进行比较似乎更难。字典只能用键构建吗?如果它不能如何只是添加一个随机值,因为我实际上不会使用它?

喜欢

{Math 2415 : random or blank, 
 CSE 3314 : random or blank}

感谢

6 个答案:

答案 0 :(得分:3)

你应该使用一套:

s = set(['Math 2415', 'CSE 3314'])

测试值是否在集合中:

'Math 2415' in s

在集合中添加另一个元素:

s.add('CS 1')

有关其他设置操作,请参阅the python documentation

答案 1 :(得分:2)

myDict = {'Math 2415' : None,  'CSE 3314' : None}

答案 2 :(得分:1)

您还可以考虑使用defaultdict,其默认值对应于您的要求。这将是实现随机默认值的最佳方式。

例如:

from random import randint
from collections import defaultdict

# a random value initializer
def randomval():
    return randint(1,100)

# your dictionary
mydict = defaultdict(randomval)

print mydict["Math 2415"] # initializes this key with 
                          # a random integer and prints it

答案 3 :(得分:0)

您应该采用kalic的建议并使用一套

如果你真的需要一个带有基于列表的键的dict,并且值初始化为None

dict.fromkeys(['Math 2415', 'CSE 3314'])
{'Math 2415': None, 'CSE 3314': None}

答案 4 :(得分:0)

我不允许使用套装。我尝试了第一个人在使用“无”时所说的内容,但是\ n一直在出现。通常id只是剥离它,但没有没有属性条。怎么摆脱\ n。这是我写的。

def createcompleteddic (cdic) :
    edic = {}
    for classs in fp :
        edic[classs]= [None.strip()]
    return edic

### Main ###
fp = open("completed.txt","r")
a = createcompleteddic(fp)
print a

答案 5 :(得分:0)

  

浏览列表中的每个项目并将其与字典进行比较

这并不难。

d = {'a':1, 'b':2}
l = ['a', 'b']
print [i in d for i in l]

你会得到

[True, False]

根据您的代码

def createcompleteddic (cdic) :
    edic = {}
    for classs in fp :
        edic[classs]= [None.strip()]
    return edic

也许你想要这个?

edic[classs.rstrip()] = None