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

2019-05-15  本文已影响0人  battleMonkey

根据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')]
上一篇下一篇

猜你喜欢

热点阅读