不能让我的python字典正常工作


nums = [3,2,2,3]
hash = {}

for i in range(len(nums)):
if nums[i] not in hash:
hash[nums[i]] = [i]
else:
hash[nums[i]] = hash[nums[i]].append(i)

print(hash)

我在这里要做的是将列表中某个元素出现的索引作为列表的值添加到键上,键是元素本身。

例如: -nums = [3,2,2,3]应该返回{3: [0,3], 2: [1,2]相反,我的代码返回的是:-{2: None, 3: None}

请告诉我我的代码哪里出错了。谢谢。

hash[nums[i]] = hash[nums[i]].append(i)

append总是返回none,因为它修改了原始列表,你只需要

hash[nums[i]].append(i) 

那里一切都很好。也可以使用内置的枚举函数来代替for循环

nums = [3,2,2,3]
hash = {}

for i, item in enumerate(nums):
if item not in hash:
hash[item] = [i]
else:
hash[item].append(i)

print(hash)

as juanpa。Arrivillaga已经注释过了,当附加到hash字典的值时,不应该覆盖它。

nums = [3, 2, 2, 3]
hash = {}
for i in range(len(nums)):
if nums[i] not in hash:
hash[nums[i]] = [i]
else:
hash[nums[i]].append(i)
print(hash)
# {3: [0, 3], 2: [1, 2]}

使用enumerate和setdefault的更紧凑的方法可以得到相同的结果。

hash = {}
nums = [3, 2, 2, 3]
for i, num in enumerate(nums):
hash.setdefault(num, []).append(i)
print(hash)
# {3: [0, 3], 2: [1, 2]}

最新更新