我想知道是否有可能比
>>> a={1:'a',2:'b',3:'c',4:'d',5:'e'}
>>> filterlist=[1,3,5]
>>> b=dict((key,value) for key,value in a.iteritems() if key in filterlist)
>>> b
{1: 'a', 3: 'c', 5: 'e'}
过滤(排序)可能基于值或键
EDIT1:如以下评论中所述,其过滤不排序
我想知道是否有可能比
>>> a={1:'a',2:'b',3:'c',4:'d',5:'e'}
>>> filterlist=[1,3,5]
>>> b=dict((key,value) for key,value in a.iteritems() if key in filterlist)
>>> b
{1: 'a', 3: 'c', 5: 'e'}
过滤(排序)可能基于值或键
EDIT1:如以下评论中所述,其过滤不排序
我认为您的意思是过滤,而不是排序。这是使用字典理解通过键过滤字典的更优雅的方式(IMO):
>>>a = {1:'a', 2:'b', 3:'c', 4:'d', 5:'e'}
>>>filterlist = [1, 3, 5]
>>>b= {key: a[key] for key in filterlist}
>>>b
{1: 'a', 3: 'c', 5: 'e'}
使用评论中提到的 OrderedDict
基于键的排序:
b = OrderedDict(sorted([(key, value) for (key,value) in a.items()]))
根据值排序:
b = OrderedDict(sorted([(value, key) for (key,value) in a.items()]))