根据value, 获取列表字典数据中对应元素

根据value, 获取列表字典数据中对应元素,代码如下:

def getIndex(li, val, whichKey=None):
    l = []
    for num, i in enumerate(li):
        l += ((num, i.get(whichKey), k) for k, v in i.items() if v == val)
    return l

详解:

def getIndex(li, val, whichKey=None):
    """

    :param li: 数据data
    :param val: 查询的value值
    :param whichKey: 显示字典数据的关键字key, 不传则为None
    :return: 查询到的 包含 value 的, 元素的元组列表,[(index, whichKey, key),...]
    """
    l = []
    # 获取列表<数据i>及其<下标num>
    for num, i in enumerate(li):
        # i 为 字典, 形如{key1: value1, key2: value2}
        # 追加数据  查询的val对应的 num, whichKey, key 到列表 l 中
        l += ((num, i.get(whichKey), k) for k, v in i.items() if v == val)
    return l
d = [{"name": 'Tony', 'a': 12, 'c': 12}, {"name": 'Peter', 'g': 12}, {"name": 'Tom', 'k': 33}, {"name": 'Tom', 'l': 12}]

res = getIndex(d, 12)
print(res)

[(0, None, 'a'), (0, None, 'c'), (1, None, 'g'), (3, None, 'l')]
res2 = getIndex(d, 12, 'name')
print(res2)

[(0, 'Tony', 'a'), (0, 'Tony', 'c'), (1, 'Peter', 'g'), (3, 'Tom', 'l')]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。