首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python强制转换和奇怪的类型转换

Python强制转换和奇怪的类型转换
EN

Stack Overflow用户
提问于 2018-08-15 14:07:35
回答 1查看 31关注 0票数 0

我有一段代码,这是应该创建和排序的列表文件的大小。这就是它:

代码语言:javascript
复制
class DataScript(object):

def __init__(self, index, name, size):
    self.index = index
    self.name = name
    self.size = size

def __cmp__(self, other):
    if hasattr(other, 'getKey'):
        return self.getKey().__cmp__(other.getKey())

def getKey(self):
    return self.size

def __iter__(self):
    return self

def __next__(self):
    self.index += 1
    try:
        return data[self.index - 1]
    except IndexError:
        self.idx = 0
        raise StopIteration  # Done iterating.


resultList = []
data = [d for d in os.listdir(dirpath) if '_DATA_TABLE' in d]
i=0
for file in data:
    fileinfo = os.stat(join(dirpath, file))
    file_obj = DataScript(i, file, float(fileinfo.st_size))
    if isinstance(file_obj, DataScript):
        resultList.extend(file_obj)

    i=i+1

items = resultList
for i in range(len(items)):
    for j in range(len(items) - 1 - i):
        item1 = items[j]
        item2 = items[j+1]
        if isinstance(item1, DataScript) and isinstance(item2, DataScript):
            if item1.__cmp__(item2)>0:
                items[j] = item2
                items[j+1] = item1
resultList = items

一切都正常,但并不完全像预期的那样。最后的结果列表不是DataScript对象的排序列表,而是字符串。为什么?因此,我在最后的排序部分不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-15 14:13:15

你可能是想用append代替extend

代码语言:javascript
复制
for file in data:
    fileinfo = os.stat(join(dirpath, file))
    file_obj = DataScript(i, file, float(fileinfo.st_size))
    if isinstance(file_obj, DataScript):
        resultList.append(file_obj)  # append DataScript obj to your list

    i=i+1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51853709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档