python - 如何从Python列表中对字典进行排序

标签 python dictionary

我有这个东西

mydict = OrderedDict({'a':'1', 'd':'2','f':'1', 'i':'2','m':'1', 'k':'2'})

现在假设我有这样的列表

l = [i,k]

所以我想根据列表l对mydict进行排序。这样 i,k 将成为前两项,然后其他项目保持原始顺序

我想以尽可能少的编码来完成此操作。在Python中

最佳答案

使用unique_everseen来自 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')])

关于python - 如何从Python列表中对字典进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16561171/

相关文章:

Python套接字绑定(bind)0.0.0.0,检查传入消息

python - 将有序字典列表转换为具有多个值的嵌套列表

c# - 复合键字典

python - 从 tkvar.get() 截断字典

vb.net - 如何使用 LINQ 过滤嵌套类的集合以生成这些类的唯一属性的字典?

python - OpenCV Python Split -> Laplacian -> HoughCircles = 断言失败。

python - 确定 numpy 子数组是否重叠?

python - Jinja2 中如何将变量从一个模板传递到另一个模板

python - Pandas,来自 2 个 DF 的两列的总和值

Python 字典语法,有一个 for 条件