2014-12-01 51 views
0

我想,我傳遞到在正在創建的設置功能的現有的字典中創建值的設置的Python:製作一個集字典值

舉個例子:

def function(dictionary): 

說我的字典裏是這樣的:{'1': 'Monday', '2': 'Tuesday', '3': 'Monday'}

我要的是一組只包含我的字典裏的獨特價值的元素,像這樣:

{'Monday', 'Tuesday'} 

想法?

回答

7

這將是:

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

0

是另一種獨特的:

>>> 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