如何在python中从列表中排序词典

如何在python中从列表中排序词典,python,dictionary,Python,Dictionary,我有这些东西 mydict = OrderedDict({'a':'1', 'd':'2','f':'1', 'i':'2','m':'1', 'k':'2'}) 现在假设我有这样的列表 l=[i,k] 因此,我想根据列表l订购mydict。因此,i,k将是前两个项目,然后其他项目保持其原始顺序 我想用尽可能少的编码来实现这一点。在Python中,使用itertools中的配方 def unique_everseen(iterable, key=None): "List unique

我有这些东西

mydict = OrderedDict({'a':'1', 'd':'2','f':'1', 'i':'2','m':'1', 'k':'2'})
现在假设我有这样的列表

l=[i,k]

因此,我想根据列表
l
订购mydict。因此,
i,k
将是前两个项目,然后其他项目保持其原始顺序

我想用尽可能少的编码来实现这一点。在Python中,使用itertools中的配方

def unique_everseen(iterable, key=None):
    "List unique elements, preserving order. Remember all elements ever seen."
    # unique_everseen('AAAABBBCCDAABBB') --> A B C D
    # unique_everseen('ABBCcAD', str.lower) --> A B C D
    seen = set()
    seen_add = seen.add
    if key is None:
        for element in ifilterfalse(seen.__contains__, iterable):
            seen_add(element)
            yield element
    else:
        for element in iterable:
            k = key(element)
            if k not in seen:
                seen_add(k)
                yield element

>>> from itertools import *
>>> lis = ["i","k"]
>>> mydict = OrderedDict([('a', '1'), ('d', '2'), ('f', '1'), ('i', '2'), ('k', '2'), ('m', '1')])
# A list is used in creating the OrderedDict, a dict would lose initial order
>>> OrderedDict((key,mydict[key]) for key in unique_everseen(chain(lis,mydict)))
OrderedDict([('i', '2'), ('k', '2'), ('a', '1'), ('d', '2'), ('f', '1'), ('m', '1')])

到现在为止你都试了些什么?你希望它的最小值是多少?你知道你使用字典而不是列表会丢失
OrderedDict
的初始顺序。我在你的帖子中找不到
h
。当你使用
itertools
时,你应该使用
chain(lis,mydict)
,它也适用于Py3