快速提问:在Python 3中,如果我有以下代码
def file2dict(filename):
dictionary = {}
data = open(filename, 'r')
for line in data:
[ key, value ] = line.split(',')
dictionary[key] = value
data.close()
return dictionary
这意味着文件由于该行而必须在文件的每一行中包含正好2个字符串(或数字,或其他)。
[ key, value ] = line.split(',')
因此,如果在我的文件中我有类似的内容
约翰45,65
杰克56442
该函数引发异常。
问题:为什么键,值放在方括号中?例如为什么
adr, port = s.accept()
不使用方括号?
如果要在字典中的每个键上附加2个值,如何修改此代码?谢谢。
最佳答案
[
和]
周围的key, value
不能使您获得任何收益。
您收到的错误ValueError: too many values to unpack
是因为您要用逗号分隔John,45,65
之类的文本。在shell中执行"John,45,65".split(',')
。你得到
>>> "John,45,65".split(',')
['John', '45', '65']
您的代码正在尝试将3个值
"John"
,45
和65
分配给两个变量key
和value
,从而导致错误。有几种选择:
1)
str.split
具有可选的maxsplit
参数:>>> "John,45,65".split(',', 1)
['John', '45,65']
如果
"45,65"
是要在字典中为该键设置的值。2)削减额外的价值。
如果65不是您想要的,那么您可以执行以下操作
>>> name, age, unwanted = "John,45,65".split(',',)
>>> name, age, unwanted
('John', '45', '65')
>>> dictionary[name] = age
>>> dictionary
{'John': '45'}
而只是不使用
unwanted
变量,或者将其拆分为列表并且不使用最后一个元素:>>> data = "John,45,65".split(',')
>>> dictionary[data[0]] = data[1]
>>> dictionary
{'John': '45'}
关于python - 你能解释一下吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29951411/