回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在处理一个文本文件“biones.txt”。其内容示例如下所示:</p>
<pre><code>Special Type A Sunflower
2016-10-12 18:10:40
Asteraceae
Ingredient in Sunflower Oil
Brought to North America by Europeans
Requires fertile and moist soil
Full sun
Pine Tree
2018-12-15 13:30:45
Pinaceae
Evergreen
Tall and long-lived
Temperate climate
Tropical Sealion
2019-01-20 12:10:05
Otariidae
Found in zoos
Likes fish
Likes balls
Likes zookeepers
Big Honey Badger
2020-06-06 10:10:25
Mustelidae
Eats anything
King of the desert
</code></pre>
<p>当它的内容转换为字典输入的值时,它运行良好。
<br/>输入</p>
<pre><code>def TextFileToDictionary():
dataset = []
with open(FinalFilePath, "r") as textfile:
sections = textfile.read().split("\n\n")
for section in sections:
lines = section.split("\n")
dataset.append({
"Name": lines[0],
"Date": lines[1],
"Information": lines[2:]
})
return dataset
TextFileToDictionary()
</code></pre>
<p><br/>输出</p>
<pre><code>[{'Name': 'Special Type A Sunflower',
'Date': '2016-10-12 18:10:40',
'Information': ['Asteraceae',
'Ingredient in Sunflower Oil',
'Brought to North America by Europeans',
'Requires fertile and moist soil',
'Full sun']},
{'Name': 'Pine Tree',
'Date': '2018-12-15 13:30:45',
'Information': ['Pinaceae',
'Evergreen',
'Tall and long-lived',
'Temperate climate']},
{'Name': 'Tropical Sealion',
'Date': '2019-01-20 12:10:05',
'Information': ['Otariidae',
'Found in zoos',
'Likes fish',
'Likes balls',
'Likes zookeepers']},
{'Name': 'Big Honey Badger',
'Date': '2020-06-06 10:10:25',
'Information': ['Mustelidae', 'Eats anything', 'King of the desert']}]
</code></pre>
<p>正如所观察到的,输出包含多个字典,没有名称</p>
<p>目前,我正在尝试创建一些函数,这些函数将按照<br/>1)第一个键值(按字母顺序)和<br/>2)第二个键值(按最新日期)对字典进行排序</p>
<p>我的进展情况如下:</p>
<pre><code>import itertools
import os
MyFilePath = os.getcwd()
ActualFile = "creatures.txt"
FinalFilePath = os.path.join(MyFilePath, ActualFile)
def TextFileToDictionaryName():
dataset = []
with open(FinalFilePath, "r") as textfile:
sections = textfile.read().split("\n\n")
for section in sections:
lines = section.split("\n")
dataset.append({
"Name": lines[0],
"Date": lines[1],
"Information": lines[2:]
})
dataset.sort(key=lambda x: x[0]['Name'], reverse=False)
return dataset
TextFileToDictionaryName()
def TextFileToDictionaryDate():
dataset = []
with open(FinalFilePath, "r") as textfile:
sections = textfile.read().split("\n\n")
for section in sections:
lines = section.split("\n")
dataset.append({
"Name": lines[0],
"Date": lines[1],
"Information": lines[2:]
})
dataset.sort(key=lambda x: x[1]['Date'], reverse=True)
return dataset
TextFileToDictionaryDate()
</code></pre>
<p>但是,我遇到了一个错误“KeyError:0”。我不知道如何解决它。
<br/>我也不确定如何将字典输出转换回字符串格式,就像前面的“bioters.txt”文件的内容一样</p>
<p>有人知道如何修复代码吗</p>
<p>非常感谢</p>