本文主要是通过现有字典对应的键值将某列表中包含的字典中的键值进行改变。
思路1:
- 利用元组的切片进行操作,详细看代码
代码1:
def fun(lists,dicts):
'''
注意lists和dicts不能混
'''
res = []
for i in lists:
dict1 = {}
for j in i.items():
t = j[0]
for k in range(len(t)):
temp = [x for x,y in dicts.items() if y == t[k]] # 找到对应值的键
temp = tuple(temp)
if k == 0:
t = temp + t[1:]
elif k == len(t):
t = t[:-1] + temp
else:
t = t[:k] + temp + t[k+1:]
dict1[t] = j[1]
res.append(dict1)
return res
if __name__ == "__main__":
dicts = {'abc':0,'ade':1,'dfec':2,'sg':3,'grf':4,'sfs':5,'secre':6}
lists = [{(0,):179,(6,):114},{(2,3):69,(4,5):90},{(0,0,0):528,(3,4,2):835},{(0,0,0,0):208}]
print(fun(lists,dicts))
思路2:
- 通过先把字典中的键和值分开保存,然后再找到列表中元素值对应的字典的键。
代码2:
dicts = {'abc': 0, 'ade': 1, 'dfec': 2, 'sg': 3, 'grf': 4, 'sfs': 5, 'secre': 6}
lists = [{(0,): 179, (6,): 114}, {(2, 3): 69, (4, 5): 90}, {(0, 0, 0): 528, (3, 4, 2): 835}, {(0, 0, 0, 0): 208}]
def fun(dicts,lists):
key_list=[]
value_list=[]
for key,value in dicts.items():
key_list.append(key)
value_list.append(value)
res = []
for i in lists:
res1 = {}
for j,k in i.items():
number_list = []
for number in j:
if number in value_list:
number = key_list[value_list.index(number)]
number_list.append(number)
number_tuple = tuple(number_list)
res1[number_tuple] = k
res.append(res1)
print(res)
fun(dicts,lists)