如何创建一个没有重复值的新列表?



oldList,我想比较每个Key的值,例如:T1==T1取Id,如:

oldList= [
{"Id":1, "Key":["T2","T1"]},
{"Id":2, "Key":["T3","T5"]},
{"Id":3, "Key":["T2"]},
{"Id":4, "Key":["T3","T1"]},
{"Id":5, "Key":["T2","T4"]},
{"Id":6, "Key":["T2","T1","T3"]},
]

for i in lista_2:
for KeyId in i["Key"]:
if KeyId == KeyId :
#grab Id

这是不工作,我试图创建这个结果:

newList = [
{"Key":"T1","Ids":[1,4,6]}
{"Key":"T2", "Ids":[1,3,5]}
...
]

简而言之,我不得不说,T1有这些Ids

尝试:

oldList = [
{"Id": 1, "Key": ["T2", "T1"]},
{"Id": 2, "Key": ["T3", "T5"]},
{"Id": 3, "Key": ["T2"]},
{"Id": 4, "Key": ["T3", "T1"]},
{"Id": 5, "Key": ["T2", "T4"]},
{"Id": 6, "Key": ["T2", "T1", "T3"]},
]
out = {}
for d in oldList:
for k in d["Key"]:
out.setdefault(k, []).append(d["Id"])
print(out)

打印:

{"T2": [1, 3, 5, 6], "T1": [1, 4, 6], "T3": [2, 4, 6], "T5": [2], "T4": [5]}

将输出转换为问题中指定的格式:

out = [{"Key": k, "Ids": v} for k, v in out.items()]
print(out)

打印:

[
{"Key": "T2", "Ids": [1, 3, 5, 6]},
{"Key": "T1", "Ids": [1, 4, 6]},
{"Key": "T3", "Ids": [2, 4, 6]},
{"Key": "T5", "Ids": [2]},
{"Key": "T4", "Ids": [5]},
]

相关内容

最新更新