通过使用文本文件在Python中对元组进行字典
我有一个代码返回一个字典,名称作为键和相应的数值元组。 名称后的第一个数字控制相应元组中包含多少个数字(元组中包含的数字从左到右)。 例如,文本"Ali 6 7 6 5 12 31 61 9"
具有6作为名称后面的第一个数字,并且这行文本成为具有关键字“Ali”的字典条目,并且相应的值是元组接下来的六个整数“阿里”:(7,6,5,12,31,61)。
这是我拍摄代码的电影
Bella 5 2 6 2 2 30 4 8 9 2
Gill 2 9 7 54 67
Jin 3 26 51 3 344 23
Elmo 4 3 8 6 8
Ali 6 7 6 5 12 31 61 9
预期的产出是
Ali : (7, 6, 5, 12, 31, 61)
Bella : (2, 6, 2, 2, 30)
Elmo : (3, 8, 6, 8)
Gill : (9, 7)
Jin : (26, 51, 3)
所以我就这样做了
def get_names_num_tuple_dict(filename):
file_in = open(filename, 'r')
contents = file_in.read()
file_in.close()
emty_dict = {}
for line in contents:
data = line.strip().split()
key = data[0]
length = int(data[1])
data = tuple(data[2:length + 2])
emty_dict[key] = data
return emty_dict
但我有这个错误长= int(数据[1])IndexError:列表索引超出范围
任何人都可以帮忙吗? 这将非常有帮助。 我第一次学习字典时有点虚弱。
使用以下代码:
def get_names_num_tuple_dict(filename):
emty_dict = {}
with open(filename) as f:
for line in f:
data = line.strip().split()
key = data[0]
length = int(data[1])
data = tuple(data[2:length + 2])
emty_dict[key] = data
return emty_dict
print(get_names_num_tuple_dict('my_filename'))
输出:
{'Bella': ('2', '6', '2', '2', '30'), 'Gill': ('9', '7'), 'Jin': ('26', '51', '3'), 'Elmo': ('3', '8', '6', '8'), 'Ali': ('7', '6', '5', '12', '31', '61')}
以下是发生的情况:
contents = file_in.read()
将您的文件读入字符串。 当你循环这个字符串时,它会逐个字符地出现,并给你IndexError: list index out of range
。
基本上尝试使用:
for line in file_in:
data = line.strip().split()
...
链接地址: http://www.djcxy.com/p/5453.html