Riv*_*red 3 python dictionary for-loop list-comprehension list
我有一个列表列表,其中每个列表都包含一个字典和整数。有时会出现重复的列表,我希望直接从父列表中删除它们。目前,我正在创建一个新列表并迭代旧列表以确保仅附加唯一值,但我认为这是不好的做法。是否可以将其重写为具有列表理解的单行代码,或者可以直接过滤原始列表以提高性能?
TRIAL=[[{'http': '46.101.160.223:80', 'https': '46.101.160.223:80'}, 0],
[{'http': '66.70.178.214:9300', 'https': '66.70.178.214:9300'}, 0],
[{'http': '130.61.100.135:80', 'https': '130.61.100.135:80'}, 0],
[{'http': '157.245.27.9:3128', 'https': '157.245.27.9:3128'}, 0],
[{'http': '185.246.84.7:8080', 'https': '185.246.84.7:8080'}, 0],
[{'http': '185.246.84.7:8080', 'https': '185.246.84.7:8080'}, 0],
[{'http': '130.61.100.135:80', 'https': '130.61.100.135:80'}, 1]]
#We have some duplicates which we want to filter out if there with function
temporary_list=[]
for i in TRIAL:
if i[0] not in [item[0] for item in temporary_list]:
temporary_list.append(i)
temporary_list (desired outcome)
[[{'http': '46.101.160.223:80', 'https': '46.101.160.223:80'}, 0],
[{'http': '66.70.178.214:9300', 'https': '66.70.178.214:9300'}, 0],
[{'http': '130.61.100.135:80', 'https': '130.61.100.135:80'}, 0],
[{'http': '157.245.27.9:3128', 'https': '157.245.27.9:3128'}, 0],
[{'http': '185.246.84.7:8080', 'https': '185.246.84.7:8080'}, 0]]
Run Code Online (Sandbox Code Playgroud)
如果你可以使用pandas:
import pandas as pd
df = pd.DataFrame(TRIAL, columns=['d', 'i'])
out = df.groupby(df['d'].apply(dict.values).apply(tuple)).last().values.tolist()
print(out)
[[{'http': '130.61.100.135:80', 'https': '130.61.100.135:80'}, 1],
[{'http': '157.245.27.9:3128', 'https': '157.245.27.9:3128'}, 0],
[{'http': '185.246.84.7:8080', 'https': '185.246.84.7:8080'}, 0],
[{'http': '46.101.160.223:80', 'https': '46.101.160.223:80'}, 0],
[{'http': '66.70.178.214:9300', 'https': '66.70.178.214:9300'}, 0]]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
91 次 |
| 最近记录: |