Python:如何增加字典中列表的索引


mydict = {}
pop_bin_dict = {}
pop_bin_holder = []
new = []
index = 0

file_handle = open(filename, 'r')
for line in file_handle:
line = line.rstrip()
line = line.split(',')
mydict[line[0]] = int(line[1]) # first dict

print(mydict) # result: {'St. Martin (French part)': 31949, 'Nauru': 13049, 'Palau': 21503, 'British Virgin Islands': 30661, 'San Marino': 33203, 'Gibraltar': 34408, 'Monaco': 38499, 'Turks and Caicos Islands': 34900, 'Liechtenstein': 37666}
for key in mydict:
pop_bin = mydict[key] // granularity
if pop_bin not in pop_bin_holder:
pop_bin_holder.append(pop_bin)

print(pop_bin_holder) # result = [3, 1, 2]
# below i'm trying out a few things, it's incorrect but it's the closest ive got
for key in mydict:
pop_bin = mydict[key] // granularity
if pop_bin == pop_bin_holder[index]:
new.append(key)
pop_bin_dict[pop_bin_holder[index]] = new
index += 1

print(pop_bin_dict) # prints out: {3: ['St. Martin (French part)', 'British Virgin Islands', 'San Marino', 'Gibraltar', 'Monaco', 'Turks and Caicos Islands', 'Liechtenstein']}

为什么index += 1不增加index?我正试图让代码的最后一部分成为:

{3: ['St. Martin (French part)', 'British Virgin Islands', 'San Marino', 'Gibraltar', 'Monaco', 'Turks and Caicos Islands', 'Liechtenstein'], 1: ['Nauru'], 2: ['Palau']}

您缺少缩进:index += 1应该在for循环下,但正如您发布的那样,它在它之后。

查看您的代码,您只在pop_bin_holder中存储唯一元素,而不是所有元素。因此,如果您至少有一个重复的pop_bin,那么您将拥有len(pop_bin_holder) < len(mydict),因此抛出一个IndexError。如果你现在的问题是,你需要提供更多关于这个特定问题的细节

index不在正确的缩进中,它在for循环之外。

此外,如果您想以这种方式枚举,您将希望使用enumerate函数,如下所示:

for (idx, (key, value)) in enumerate(mydict.items()):
pass  # use idx, key, value in some way

最新更新