为了练习如何使用字典变得更流利,我试图编写一个程序,读取月球大气的化学成分,并将元素及其估计成分分配为一个键值对,如下"NEON 20":40000
数据文件如下所示
Estimated Composition (night, particles per cubic cm):
Helium 4 - 40,000 ; Neon 20 - 40,000 ; Hydrogen - 35,000
Argon 40 - 30,000 ; Neon 22 - 5,000 ; Argon 36 - 2,000
Methane - 1000 ; Ammonia - 1000 ; Carbon Dioxide - 1000
到目前为止,我的代码如下所示:
def read_data(filename):
dicti = {}
with open(filename,"r") as infile:
infile.readline()
for line in infile:
words = line.split(";")
dicti[words[0]] = f"{words[1]}"
for key in dicti:
print(key, dicti[key])
read_data("atm_moon.txt")
我的问题是:
"-"
和";"
上进行拆分李>有没有人愿意帮助一个菜鸟脱险? 欢迎一切帮助
我觉得使用Python REPL来测试这一点更容易
最后,创建具有所需映射的dictionary对象:
要根据需要转换键值对(即,将字典中的所有键大写并将所有值转换为
int
),可以使用辅助函数转换键值对,如下所示:这里有一个行列表。每行可以包含多个项目,以分号分隔。每个项目(或记录)由元素名称、连字符和粒子计数组成
这里不需要同时拆分不同的分隔符;相反,您可以使用分号拆分各个项目,然后根据连字符将每个项目拆分为字典所需的键/值对
请注意,我在分隔符周围包含空格,因此在拆分时它们将被删除。否则这些都会出现在你的字典里。另一种选择是使用
strip()
;这样,即使有更多(或没有)空间,它也能正常工作但是,如果您的某个记录中可能有一个分号或连字符而不是用作分隔符,我会在
.split()
调用中保留空格现在我将更进一步,假设您希望这些值作为实际数字,而不仅仅是字符串。为此,我们将删除逗号并将其转换为整数
如果有任何带有小数部分(小数点)的值,可以使用
float()
代替int()
将其转换为浮点数要被多个分隔符分割,有正则表达式:Split Strings into words with multiple word boundary delimiters
或者,您可以首先替换所有分隔符以仅保留一种类型,然后使用
.split()
我不知道你想如何用它来制作一个字典,但是你总是可以在新创建的列表中循环,然后一个接一个地分配它(或者使用生成器)。如果你包括字典应该是什么样子,我可以提供一个例子
要将字符串更改为大写,请使用:
相关问题 更多 >
编程相关推荐