• python中字典一键多相同值反转技巧


    >>> some_dict = {('D', 15, 30): 'D', ('F', 15, 16): 'F', ('F', 17, 22): 'F', ('F', 23, 26): 'F', ('F', 27, 30): 'F', ('A', 2, 4): 'A', ('A', 5, 9):  
    ... 'A', ('A', 10, 13): 'A', ('A', 14, 30): 'A', ('B', 15, 30): 'B', ('C', 15, 30): 'C'}
    >>> rev_multidict = {}
    >>> for key,value in some_dict.items():
    ...     rev_multidict.setdefault(value,set()).add(key)
    ... 
    >>> rev_multidict
    {'D': {('D', 15, 30)}, 'F': {('F', 23, 26), ('F', 15, 16), ('F', 17, 22), ('F', 27, 30)}, 'A': {('A', 14, 30), ('A', 2, 4), ('A', 10, 13), ('A', 5, 9)}, 'B': {('B', 15, 30)}, 'C': {('C', 15, 30)}}
    >>> [key for key,values in rev_multidict.items() if len(values) > 1]
    ['F', 'A']
    >>> [values for key,values in rev_multidict.items() if len(values) >1]
    [{('F', 23, 26), ('F', 15, 16), ('F', 17, 22), ('F', 27, 30)}, {('A', 14, 30), ('A', 2, 4), ('A', 10, 13), ('A', 5, 9)}]
    >>> set(chain.from_iterable(values for key,values in rev_multidict.items() if len(values) > 1))
    >>> from itertools import chain
    >>> set(chain.from_iterable(values for key,values in rev_multidict.items() if len(values) > 1))
    {('F', 23, 26), ('F', 15, 16), ('A', 10, 13), ('A', 14, 30), ('F', 17, 22), ('A', 2, 4), ('A', 5, 9), ('F', 27, 30)}
    >>> type(set(chain.from_iterable(values for key,values in rev_multidict.items() if len(values) > 1)))
    <class 'set'>
    >>> for i in set(chain.from_iterable(values for key,values in rev_multidict.items() if len(values) > 1)):
    ...     print(i)
    ... 
    ('F', 23, 26)
    ('F', 15, 16)
    ('A', 10, 13)
    ('A', 14, 30)
    ('F', 17, 22)
    ('A', 2, 4)
    ('A', 5, 9)
    ('F', 27, 30)
    >>> 
    
  • 相关阅读:
    前端基础之BOM和DOM
    JavaScript
    css-属性、样式调节
    计算机操作系统
    计算机组成原理
    计算机基础之编程
    css-选择器
    HTML-标签
    python打印有色字体
    mysql 数据库语法详解
  • 原文地址:https://www.cnblogs.com/Richardo-M-Q/p/14886481.html
Copyright © 2020-2023  润新知