我对 Python 还很陌生,我想知道如何将文本文件中已有的 key:value 形式的内容转换为 Python 字典?
例如。
2:red
3:orange
5:yellow
6:green
(每个键:值在单独的行上)
我看过其他帖子,但似乎都不起作用,我知道我做错了。到目前为止,我已经:
def create_colours_dictionary(filename):
colours_dict = {}
file = open(filename,'r')
contents = file.read()
for key in contents:
#???
return colours_dict
最佳答案
执行此操作的直接方法是使用传统的 for
循环,以及 str.split
方法。
我不是从文件中读取数据,而是将输入数据作为多行字符串嵌入到脚本中,并使用 str.splitlines
将其转换为字符串列表,以便我们可以对其进行循环,就像循环文件的行一样。
# Use a list of strings to simulate the file
contents = '''\
2:red
3:orange
5:yellow
6:green
'''.splitlines()
colours_dict = {}
for s in contents:
k, v = s.split(':')
colours_dict[k] = v
print(colours_dict)
输出
{'2': 'red', '3': 'orange', '5': 'yellow', '6': 'green'}
请注意,只有在冒号周围没有空格的情况下,此代码才能正常工作。如果可能有空格(或行首或行尾有空格),您可以使用 str.strip
删除它们的方法。
有几种方法可以使其更加紧凑。
我们可以使用嵌套在字典理解中的列表理解:
colours_dict = {k: v for k, v in [s.split(':') for s in contents]}
但在 generator expression 上使用 dict
构造函数会更加紧凑。 :
colours_dict = dict(s.split(':') for s in contents)
如果您不熟悉推导式,请参阅 List Comprehensions和 Dictionaries在官方教程中。
关于python - 将文本中的键值对解析为字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44384360/