Python 从列表中删除较小的值

Python 从列表中删除较小的值,python,python-2.7,if-statement,for-loop,Python,Python 2.7,If Statement,For Loop,我有一个文本文件,其中包含: xxx_123 xxx_001 xxx_345 YYY_123 ZZZ_789 ZZZ_123 我想返回一个带有以下内容的列表: xxx_345 YYY_123 ZZZ_789 有什么想法吗?你不能一次完成,所以你需要保留结果: from collections import defaultdict cache = defaultdict(int) for item in list1: item = item.split("_") key = it

我有一个文本文件,其中包含:
xxx_123
xxx_001
xxx_345
YYY_123
ZZZ_789
ZZZ_123

我想返回一个带有以下内容的列表:
xxx_345
YYY_123
ZZZ_789


有什么想法吗?

你不能一次完成,所以你需要保留结果:

from collections import defaultdict
cache = defaultdict(int)

for item in list1:
    item = item.split("_")
    key = item[0]
    value = int(item[1])

    if cache[key] < value:
        cache[key] = value

for k, v in cache.items():
    print("{}_{}".format(k, v))
从集合导入defaultdict
cache=defaultdict(int)
对于列表1中的项目:
item=item.split(“”)
键=项[0]
值=整数(项目[1])
如果缓存[键]<值:
缓存[键]=值
对于缓存中的k,v.items():
打印(“{}{}”。格式(k,v))
来自集合导入订单
列表1=['xxx_123','xxx_001','xxx_345','YYY_123','ZZZ_789','ZZZ_123']
d=OrderedDict()
对于列表1中的项目:
第1部分,第2部分=项目拆分(“1”)
第2部分=整数(第2部分)
如果d.setdefault(第1部分,第2部分)<2部分:
d[第1部分]=第2部分
对于键,d.iteritems()中的值:
打印“{}{}”。格式(键、值)
#xxx_345
#YYY_123
#ZZZ_789
我目前有:

cache = defaultdict()
for item in list1:
    item= item.split('_')
    part1 = item[0]
    part2 = int(item[1])
if cache.setdefault(part1,part2)<part2:
    cache[part1] = part2
    for part1,part2 in cache.iteritems():
        line = "%s_%s"%(part1,part2)
        print line
cache=defaultdict()
对于列表1中的项目:
项目=项目。拆分(“”)
第1部分=项目[0]
第2部分=整数(第[1]项)

如果cache.setdefault(part1,part2)不返回列表,并且打印的项不等于输入项(它被拆分)。那么
part2>part2
怎么可能为真?告诉我任何比它本身大的数字。无论我是返回列表还是打印正确的项目,这都无关紧要——这部分我可以处理。至于part2>part2,我的另一部分代码只是再次循环,但仍然返回错误values@Mephy:这个数字将是无穷大,几乎可以用。它仍然打印所有内容,但当我打印d时,我可以看到列表的最后一个是正确答案,但无法提取that@JoshClayton如果您的需求是一个字符串列表,那么用列表理解替换最后两行代码:`result=['{}{}'。d.iteritems()中的key,value的格式(key,value)
from collections import OrderedDict

list1 = ['xxx_123', 'xxx_001', 'xxx_345', 'YYY_123', 'ZZZ_789', 'ZZZ_123']

d = OrderedDict()

for item in list1:
    part1, part2 = item.split('_', 1)
    part2 = int(part2)

    if d.setdefault(part1, part2) < part2:
        d[part1] = part2

for key, value in d.iteritems():
    print '{}_{}'.format(key, value)

# xxx_345
# YYY_123
# ZZZ_789
cache = defaultdict()
for item in list1:
    item= item.split('_')
    part1 = item[0]
    part2 = int(item[1])
if cache.setdefault(part1,part2)<part2:
    cache[part1] = part2
    for part1,part2 in cache.iteritems():
        line = "%s_%s"%(part1,part2)
        print line