【发布时间】:2022-12-01 03:36:38
【问题描述】:
我有一个大的像这样的字典(250k+ 键):
dict = {
0: [apple, green],
1: [banana, yellow],
2: [apple, red],
3: [apple, brown],
4: [kiwi, green],
5: [kiwi, brown],
...
}
目标实现:
1. 我想要一个以列表的第一个值作为键的新字典,以及同一个键的值列表。是这样的:
new_dict = {
apple: [green, red, brown]
banana: [yellow]
kiwi: [green, brown],
...
}
2. 之后我想计算每个键的值的数量(例如{apple:3, banana:1, kiwi,2}),这可以用Counter轻松实现,所以这应该不是问题。
然后,我只想选择具有一定数量值的键(例如,如果我只想保留与 2 个或更多值关联的键,final_dict 将是这样的:
final_dict = {
apple:3,
kiwi:2,
....
}
3.然后我想从至少有2个值的元素的dict返回原始键,所以最后我将有:
original_keys_with_at_least_2_values = [0, 2, 3, 4, 5]
我的代码
# Create new_dict like: new_dict = {apple:None, banana:None, kiwi:None,..}
new_dict = {k: None for k in dict.values()[0]}
for k in new_dict.keys():
for i in dict.values()[0]:
if i == k:
new_dict[k] = dict[i][1]
我一直在使用嵌套的for cicles,即使我知道 Python 理解速度更快,但我真的不知道如何解决它。任何解决方案或想法将不胜感激。
【问题讨论】:
-
请显示您到目前为止编写的代码。速度不应该成为清晰度的目标
-
另外,如果键是序列号,你为什么最初使用字典?只需使用列表列表
-
@OneCricketeer 这只是一个让我的问题更容易理解的例子,在我原来的字典中,键不是连续的。用我的代码编辑我的问题
标签: python dictionary dictionary-comprehension