我希望有一个dict
从项目列表映射到其他内容的集合,我想用空set
初始化这个dict,我能想到的最好的就是这个:
mapping = dict()
for item in listOfItems:
if item == "SomethingIDoNotWant":
continue
mapping.update({item:set()})
但这并不是非常pythonic。有没有办法用列表理解来做到这一点,这是不可能阅读的?
答案 0 :(得分:3)
最全面的方式似乎是:
mapping = {item:set() for item in listOfItems if item != "SomethingIDoNotWant"}
正如评论中Peter DeGlopper所指出的,对于Python 2.6及更早版本,没有字典理解,你需要这样做:
mapping = dict((item,set()) for item in listOfItems
if item != "SomethingIDoNotWant")
答案 1 :(得分:1)
在Python 2.7及更高版本中,您可以使用dict comprehension
mapping = {key: None if key == "SomethingIDoNotWant" else set() for key in listOfItems}
请注意,此解决方案将包含一个键“SomethingIDoNotWant”。如果不需要该密钥,则解决方案甚至更简单,并且已经在其他答案中进行了描述。