【发布时间】:2018-06-17 17:10:48
【问题描述】:
这个问题是关于嵌套字典理解的,在问这个问题之前我已经提到了 link1 和 link2。
我有一个列表,它的第一个元素是 None ,其余的是排序的正数列表。
sorted_ar = [None, 10, 10, 12, 12, 12, 15, 25]
我的要求是将字典构建为:
key_dict = {10: [3, 2], 12: [12, 3], 15: [6, 1], 25: [7, 1]}
字典的值是一个双元素列表,第一个元素是key出现的索引的总和,第二个是出现的次数。
例如对于元素 12,
索引总和 = 3+4+5 = 12,出现次数为 3。
下面的代码做到了。
key_dict = {k:[0,0] for k in sorted_ar if k!=None}
for i in range(len(sorted_ar)):
if sorted_ar[i]:
key_dict[sorted_ar[i]][0] += i
key_dict[sorted_ar[i]][1] += 1
我的要求是使用字典理解来准备 key_dict 字典。
我的尝试:
key_dict = {
sorted_ar[i]:[ key_dict[sorted_ar[i]][0] + i,key_dict[sorted_ar[i]][0] + 1]
for i in range(1,len(sorted_ar)) if sorted_ar[i]!=None
}
但这给出了一些错误的结果,因为
key_dict = {10: [2, 1], 12: [5, 1], 15: [6, 1], 25: [7, 1]}
在这种情况下我应该如何写字典理解?
【问题讨论】:
标签: python python-3.x dictionary dictionary-comprehension