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