python输入文字、成为字典_将数据输入字典

代码中有一些不同的错误。导致异常的原因是函数data写入一个全局变量,并且不返回任何内容,但是后面的代码希望它返回可编辑的内容,例如序列或生成器。在

您可以通过让顶层代码直接在全局字典上迭代来解决这个问题,也可以去掉全局代码,在data中创建字典并在末尾返回它。我建议采用后者,因为随着代码变得越来越复杂,全局变量很难处理。在

下面是一个如何工作的粗略概述(我将对中间部分略作说明,因为我将在稍后讨论):def data(file):

objects = {}

# add stuff to objects dict

return objects

下一个错误是剥线。您的代码当前使用自己的strip方法测试每一行是否存在不等式。这是Python3中的一个错误,因为line和{}具有不可比较的类型。但即使成功了,也毫无意义。我怀疑你是在试图消除空行,先剥离空行,然后再拒绝空行。你可以这样做:

^{pr2}$

这是Python社区中一些人称之为“三思而后行”(LBYL)编程风格的一个例子,因为您正在检查可能是问题的东西,然后才变成问题。另一种方法是“请求原谅比请求许可更容易”(EAFP)样式,您只需将问题可能出现的区域包装在try块中并捕获生成的异常。EAFP样式有时被认为是更“python”的,所以稍后我将展示这种样式。在

下一个错误是逻辑错误,而不是导致错误的东西。您要拆分行,并希望将其两部分分成变量key和{}。但是,你对这些变量做了两个单独的赋值,事实上它们的结果都是相同的。在这里您可以使用Python语法的一个很酷的特性,即解压缩。您可以将一个两值序列(如列表或元组)一起分配给它们,而不是分别分配每个变量。Python将负责将第一个值赋给第一个变量,将第二个值赋给第二个变量。下面是它的样子:key, value = line.split(":")

当然,如果行中没有冒号,这将失败,因此如果我们使用EAFP样式的编码,那么它是放置try块的好地方。有一种方法可以做到:try:

key, value = line.split(":")

except ValueError:

continue

相反,可以将try块放在循环中剩余的所有内容的周围,然后让except块只包含pass(它什么也不做,但忽略了异常)。在

最后,最后一个逻辑错误与如何构建嵌套字典有关。你目前的方法是先用文件中的所有键和值构建一个字典,然后将它们分成单独的部分,每个天体一个。但是,如果每个对象的关键点相同,则此操作不起作用。举例来说,由于每个物体都有一个“轨道半径”键,所以它们都会相互重写,把这个键放到一个字典里。在

@sudo\u o的回答展示了如何构建内部字典并用值填充它(它几乎与我要写的内容相同)。我只想把剩下的解释贴出来!在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值