这里我有一个dic列表,我想要删除重复项,它等于dic的第一个元素。 输入:
data = [
[
[{'color': '1'},{'color': '0'},{'color': '2'},{'color': '1'}],
[{'color': '2'},{'color': '3'},{'color': '2'},{'color': '5'}],
[{'color': '1'},{'color': '1'},{'color': '3'},{'color': '3'}]
],
[
[{'color': '1'},{'color': '1'},{'color': '4'},{'color': '4'}],
[{'color': '4'},{'color': '3'},{'color': '1'},{'color': '4'}],
[{'color': '7'},{'color': '1'},{'color': '7'},{'color': '1'}]
]
]
我已经尝试并获得了预期的输出,是否有任何pythonic方法来实现相同的目标?
代码:
new = [] ;
for i in data:
master = []
for j in i:
temp = []
for k in j:
if j[0]['color'] != k['color']:
temp.append(k)
temp.insert(0,j[0])
master.append(temp)
new.append(master)
print(new)
预期产出:
data = [
[
[{'color': '1'},{'color': '0'},{'color': '2'}],
[{'color': '2'},{'color': '3'},{'color': '5'}],
[{'color': '1'},{'color': '3'},{'color': '3'}]
],
[
[{'color': '1'},{'color': '4'},{'color': '4'}],
[{'color': '4'},{'color': '3'},{'color': '5'}],
[{'color': '7'},{'color': '1'},{'color': '1'}]
]
]
答案 0 :(得分:2)
不需要所有临时名单:
data = [[[item[i][0]] + [dct for dct in item[i][1:] if dct['color'] != item[i][0]['color']] for i,subitem in enumerate(item)] for item in data]
基本上它只是遍历每个子项,并将其替换为第一项以及其他没有相同值的项。
虽然它很难看,但你甚至可以把它减少到单行(仅用于说明目的......我不推荐它,因为可读性):
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
LoginPath = "/account/login",
AuthenticationScheme = "Cookies",
AutomaticAuthenticate = true,
AutomaticChallenge = true
});