我想使用一个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字典?
发布评论