根據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')]