【发布时间】:2017-11-09 15:28:58
【问题描述】:
我有一本看起来像的字典
a = {32: [2230], 37265: [2218], 51: [2223], 164: [2227], 3944: [2224]}
但是,a 中的值可能包含多个元素,例如
a = {32: [2200, 2230], 37265: [2201, 2218], 51: [2223], 164: [2227], 3944: [2224]}
我有一个列表,将 a 中的密钥分组存储,
b = [[32, 51, 164], [3944, 37265]]
现在我想在另一个列表中获取每个组中键的值,
clusters = []
for key_group in b:
group = []
for key in key_group:
group.extend(a[key])
if len(group) > 1:
clusters.append(group)
所以最终列表看起来像,
clusters = [[2230, 2223, 2227], [2224, 2218]]
如果a 在一个值列表中包含多个元素,clusters 看起来像,
clusters = [[2200, 2230, 2223, 2227], [2224, 2201, 2218]]
我想知道最好的方法是什么。
如果b 包含只有一个值/键的列表,并且如果此键映射到a 中的单个元素列表,则此列表将被忽略,
a = {32: [2200, 2230], 37265: [2201, 2218], 51: [2223], 164: [2227], 3944: [2224]}
b = [[32, 51, 164], [3944], [37265]]
虽然3944 映射到[2224],这将被忽略,但37265 映射到[2201, 2218],它将被保留,因为len([2201, 2218]) > 1。在这种情况下,clusters 将如下所示,
clusters = [[2200, 2230, 2223, 2227], [2201, 2218]]
【问题讨论】:
-
你能解释一下“最好”是什么意思吗?
-
@PeterWood 简洁、简单、高效的方式?
-
我编辑了答案让我知道这是否适合你:)
-
@DamianLattenero 前 3 个答案全部有效 :)
-
@daiyue 太棒了!我必须练习才能给出更好的答案哈哈...
标签: python python-3.x dictionary