gpt4 book ai didi

python - 使用 sort() 还是 search()?

转载 作者:行者123 更新时间:2023-12-01 06:03:11 25 4
gpt4 key购买 nike

如果我有一个如下所示的文件,那么打印包含第一个公共(public)字段的每一行的最佳方法是什么(即打印 field[0] = 'a' 的每一行,field[ 的每一行) 0] = 'b')?我应该使用 sort(),还是用值作为列表填充字典,或者利用类对每个字段进行分类,还是使用 search()?也许我把一个简单的解决方案变得过于复杂了。

文件:

a 2012 fff

b 2012 xxx

a 2011 fff

a 2011 vvv

b 2010 sss

常规排序:

with open('test.txt','r') as file:
for line in file:
field0,field1,field2=line.split()
field0.sort() # ???

或者

class MyClass:
def __init__(self,field0,field1,field2):
self.field0=field0
self.field1=field1
self.field2=field2
def grabField():
for i in MyClass.field0:
print MyClass.field0,MyClass.field1,MyClass.field2

with open('test.txt','r') as file:
for line in file:
field0,field1,field2=line.split()
MyClass(field0,field1,field2)
grabField()

我已确定以下代码来填充字典和排序值:

from collections import defaultdict
res = defaultdict(list)
with open('test.txt','r') as file:
for line in file:
field0, field1, field2 = line.split()
res[field0] += [field1, field2]

for i in res.keys():
print i, sorted(res[i], key=lambda x: x[0])

但是,这会产生“a [2011, 2011, 2012, fff, fff, vvv]”,我希望输出的格式与输入完全相同(但已排序):

a 2011 fff

a 2011 vvv

a 2012 fff

我不能只对原始输入使用排序,因为我将多次引用并且需要存储在内存中。每行的值是否应该存储在列表中(即字典值是列表的列表)?

最佳答案

我只会使用已排序:

>>> with open('test.txt') as f:
... lines = [l.strip() for l in f.readlines()]
...
>>> sorted_nonempty_lines = sorted((l for l in lines if l), key=lambda x: x.split()[0])
>>>
>>> for line in sorted_nonempty_lines:
... print line
...
a 2012 fff
a 2011 fff
a 2011 vvv
b 2012 xxx
b 2010 sss

关于python - 使用 sort() 还是 search()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9287536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com