的Python:制作一个集字典值

问题描述:

我想,我传递到在正在创建的设置功能的现有的字典中创建值的设置的Python:制作一个集字典值

举个例子:

def function(dictionary): 

说我的字典里是这样的:{'1': 'Monday', '2': 'Tuesday', '3': 'Monday'}

我要的是一组只包含我的字典里的独特价值的元素,像这样:

{'Monday', 'Tuesday'} 

想法?

这将是:

set(my_dict.values()) 

这两个python3与python2工作。下面的方法将是蟒蛇2稍微更高效:

set(my_dict.itervalues()) 
+0

一个次要的事情:在2.7,'viewvalues'可能比'itervalues'更快。它也与3.x行为更一致。但是当然你的代码在2.6和更早版本中不起作用。 – abarnert 2014-12-01 23:57:12

+0

@abarnert你觉得'set(my_dict [k] for k in my_dict)'......认为应该在任何地方工作... – 2014-12-02 00:02:29

+0

@JonClements:Nick Coghlan有一篇不错的博客文章,在2.x和3.x中编写需要高效的代码的方法是编写一个包装器(或者在现有项目中找到一个,比如'six'或'modernize'),然后使用它。是的,这是*功能而不是方法,但谁在乎?所以,'set(viewvalues(my_dict))'。 – abarnert 2014-12-02 00:44:50

是另一种独特的:

>>> my_dict = {'1': 'Monday', '3': 'Monday', '2': 'Tuesday'} 
>>> {y:x for x,y in my_dict.iteritems()}.keys() 
['Tuesday', 'Monday'] 
>>> 
+0

哪一个不是'set' ... – 2014-12-01 23:56:20

+0

他为什么需要设定只是为了区分价值观? – 2014-12-01 23:57:03

+1

取决于你如何解释:*我想要的是一组* ...然后是一个'set'文字的例子... – 2014-12-01 23:57:38