将字符串映射到一组字符串的Python字典? [英] Python dictionary that maps strings to a set of strings?
问题描述
我想使用一个Python字典作为键和字符串作为值的字符串。例如: {crackers:[crunchy,salty]}
它必须是一个集合,而不是列表。
I would like to be able to make a Python dictionary with strings as keys and sets of strings as the values. E.g.: { "crackers" : ["crunchy", "salty"] }
It must be a set, not a list.
但是,当我尝试以下内容:
However, when I try the following:
word_dict = dict()
word_dict["foo"] = set()
word_dict["foo"] = word_dict["foo"].add("baz")
word_dict["foo"] = word_dict["foo"].add("bang")
我得到:
Traceback (most recent call last):
File "process_input.py", line 56, in <module>
test()
File "process_input.py", line 51, in test
word_dict["foo"] = word_dict["foo"].add("bang")
AttributeError: 'NoneType' object has no attribute 'add'
如果我这样做:
word_dict = dict()
myset = set()
myset.add("bar")
word_dict["foo"] = myset
myset.add("bang")
word_dict["foo"] = myset
for key, value in word_dict:
print key,
print value
我得到:
Traceback (most recent call last):
File "process_input.py", line 61, in <module>
test()
File "process_input.py", line 58, in test
for key, value in word_dict:
ValueError: too many values to unpack
有关如何强制Python做任何我想要的任何提示?我是一个中间Python用户(或者我以为,直到我遇到这个问题。)
Any tips on how to coerce Python into doing what I'd like? I'm an intermediate Python user (or so I thought, until I ran into this problem.)
推荐答案
set.add()
不会返回一个新的集
,它修改集
它被调用。以这种方式使用:
set.add()
does not return a new set
, it modifies the set
it is called on. Use it this way:
word_dict = dict()
word_dict["foo"] = set()
word_dict["foo"].add("baz")
word_dict["foo"].add("bang")
另外,如果您使用循环的循环使用dict,那么您将迭代键:
Also, if you use a for
loop to iterate over a dict, you are iterating over the keys:
for key in word_dict:
print key, word_dict[key]
或者您可以迭代 word_dict.items()
或 word_dict.iteritems()
:
for key, value in word_dict.items():
print key, value
这篇关于将字符串映射到一组字符串的Python字典?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!