2014-03-25 237 views
3

我是Python新手,对字典感到兴奋。他们让我命名一切,以便我不必记住外地职位,并且似乎可以制作更坚实的代码。但是,现在我需要从这个词典中提取出列表(1,2,3,4)和(5,6,7,8)。有任何想法吗??而且...这个代码是随机建模程序的核心,所以我需要快速。 干杯!从字典获取列表

evnt = {'m1':{'rate':1, 'val':5 }, 
     'm2':{'rate':2, 'val':6 }, 
     'd1':{'rate':3, 'val':7 }, 
     'd2':{'rate':4, 'val':8 }} 

回答

2

一个明显的方法是列表理解,如果它不够快,那么你可能需要考虑一个不同的数据结构。

>>> [v['rate'] for v in evnt.itervalues()] 
[4, 3, 1, 2] 

注:只是python3 .values()

不,你不能为了让他们(不排序),因为你的字典没有在第一时间订购。

0

你的字典是短暂的,所以你应该会更好,而不itertools:

zip(*(item.values() for item in evnt.values())) 
0

您可以使用列表理解:

检查5.1.4节

​​

rates = [x['rate'] for x in evnt.values()] 
values = [x['val'] for x in evnt.values()]