2014-01-09 114 views
1

我這樣一個初始化的字典在Python 3.3.3每個元組的第一個項目:如何獲取列表/蟒蛇

# dict with dates and name 
my_dict = {'keyone': '2013-04-22', 'keytwo': '2013-04-25'} 

我已經值隨下列排序此相反字典片段:

# sort reverse by value 
my_list = sorted(my_dict.items(), key=lambda x:x[1], reverse=True) 

# will output a list of tuples 
[('keytwo', '2013-04-25'), ('keyone', '2013-04-22')] 

現在我想拿到鑰匙的以相同的順序列表(每個元組的第一項):

# what I need 
my_new_list = ['keytwo', 'keyone'] 

希望有人們可以幫助我。這非常令人沮喪和失望!

很多問候,

菲利克斯

回答

2

列表理解:

my_new_list = [key for key, value in my_list] 

或者只是產生的密鑰列表在th Ë第一名:

my_new_list = sorted(index_dict, key=index_dict.get, reverse=True) 
+0

非常感謝!使用第二種解決方案! – fheck

+0

第二個例子中是否需要'key = index_dict.get'?如果你確實需要它,可以對它進行排序(index_dict.keys(),reverse = True)',這樣可以減少輸入,而在python3上'.keys()'返回一個生成器,所以它不應該是內存低效的。 – SethMMorton

+0

@SethMMorton:是的,'key = index_dict.get'是必要的。我們希望按關聯的值對鍵進行排序,而不是通過鍵本身進行排序。此外,'keys()'調用不是必需的,因爲遍歷一個dict遍歷鍵,在Python 3中,'keys()'返回一個視圖,而不是一個生成器。 – user2357112

2
new_list = map(operator.itemgetter(0),my_list) 
+0

非常感謝@Joran! – fheck

0

您可以使用list comprehension

>>> my_dict = {'keyone': '2013-04-22', 'keytwo': '2013-04-25'} 
>>> my_list = sorted(my_dict.items(), key=lambda x:x[1], reverse=True) 
>>> my_new_list = [x[0] for x in my_list] 
>>> my_new_list 
['keytwo', 'keyone'] 
>>> 
+0

非常感謝@iCodez! – fheck

0
>>> d = {'keyone': '2013-04-22', 'keytwo': '2013-04-25'} 
>>> sorted(d, key=d.get, reverse=True) 
['keytwo', 'keyone']