我希望能够制作一个Python字典,字符串作为键,字符串集作为值。E、 g.:{ "crackers" : ["crunchy", "salty"] }
它必须是一个集合,而不是一个列表。
但是,当我尝试以下操作时:
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用户(或者我是这么想的,直到遇到这个问题)
set.add()
不返回新的set
,它修改调用它的set
。这样使用:另外,如果您使用
for
循环来迭代dict,那么您是在迭代键:或者,您可以遍历
word_dict.items()
或word_dict.iteritems()
:当你说
word_dict["foo"].add("baz")
时,你是在把'baz'添加到设置单词“foo”中。函数返回
None
——更新集合是一个副作用。所以最终将
word_dict["foo"]
设置为None
。只要
word_dict["foo"].add("baz")
就可以了。在第二种情况下,当你说
因为正确的语法是
只循环
word_dict
中的键。在这种情况下,你想要相反。
相关问题 更多 >
编程相关推荐