Skip to content
On this page

TIP

python中的字典数据结构的功能扩展

useAdDict

用于解决字典取值繁琐的问题。

python
from usepy import useAdDict

d = useAdDict({'a': 1, 'b': 2, 'c': {'d': 3, 'e': 4}})
assert d.a == 1
assert d.c.e == 4

useDict

扩展字典,提供了一些常用的方法。

find_keys

查找字典中所有的key,返回一个列表。

python
def find_keys(original_dict: dict, val: any) -> list:
    """
    查找字典中指定值的所有键
    :param original_dict: 原始字典
    :param val: 指定值
    :return: 键列表
    >>> UseDict.find_keys({'a': 1, 'b': 2, 'c': 3}, 2)
    ['b']
    """
    return list(key for key, value in original_dict.items() if value == val)

reverse

反转字典,key和value互换。

python
def reverse(original_dict: dict) -> dict:
    """
    反转字典
    :param original_dict: 原始字典
    :return: 反转后的字典
    >>> UseDict.reverse({'a': 1, 'b': 2, 'c': 3})
    {1: 'a', 2: 'b', 3: 'c'}
    """
    return {v: k for k, v in original_dict.items()}

sort_by_key

按照key排序。

python
def sort_by_key(original_dict: dict, az: bool = False) -> dict:
    """
    按键排序
    :param original_dict: 原始字典
    :param az: 是否升序 True: 升序 False: 降序
    :return: 排序后的字典
    >>> UseDict.sort_by_key({'c': 1, 'b': 2, 'a': 3})
    {'a': 3, 'b': 2, 'c': 1}
    """
    return dict(sorted(original_dict.items(), reverse=az))

sort_by_value

按照value排序。

python
def sort_by_value(original_dict: dict, az: bool = False) -> dict:
    """
    按值排序
    :param original_dict: 原始字典
    :param az: 是否升序 True: 升序 False: 降序
    :return: 排序后的字典
    >>> UseDict.sort_by_value({'c': 1, 'b': 2, 'a': 3})
    {'c': 1, 'b': 2, 'a': 3}
    """
    return dict(sorted(original_dict.items(), key=lambda x: x[1], reverse=az))

arrays_to_dict

将数组转换为字典。

python
def arrays_to_dict(keys: List, values: List) -> Dict:
    """
    将两个数组转换为字典
    :param keys: 键列表
    :param values: 值列表
    :return: 字典
    >>> UseDict.arrays_to_dict(['a', 'b', 'c'], [1, 2, 3])
    {'a': 1, 'b': 2, 'c': 3}
    """
    return dict(zip(keys, values))

merge

合并字典。

python
def merge(*dicts: Dict) -> Dict:
    """
    合并字典
    :param dicts: 字典列表
    :return: 合并后的字典
    >>> UseDict.merge({'a': 1}, {'b': 2}, {'c': 3})
    {'a': 1, 'b': 2, 'c': 3}
    """
    return {k: v for d in dicts for k, v in d.items()}

merge_values

合并字典的值。

python
def merge_values(*dicts: Dict) -> Dict:
    """
    合并字典,相同的key合并为数组
    :param dicts: 字典列表
    :return: 合并后的字典
    >>> UseDict.merge_values({'a': 1, 'b': 'foo', 'c': 400}, {'a': 3, 'b': 200, 'd': 400})
    {'a': [1, 3], 'b': ['foo', 200], 'c': [400], 'd': [400]}
    """
    res = defaultdict(list)
    for d in dicts:
        for key in d:
            res[key].append(d[key])
    return dict(res)

Released under the MIT License.