生成类来迭代返回的结构

2024-09-27 21:30:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图构建一个包含三条信息的数据结构:一个book名称、一个page数字和一个sentence

我现在正在做一本有两个键的字典coordinates[book][page] = sentence。但是,我想迭代我的句子,而不必迭代bookpage键(,因为我需要随机访问它们的顺序)

出于再现性的目的,以下是我创建的数据结构:

pages     = [12, 41, 50, 111, 1021, 121]
bookCodes = ['M', 'P', 'A', 'C', 'A', 'M']


sampledSentances = ['THISISASENTANCE',
                    'ANDHEREISONEMOREEXAMP',
                    'ALLFROMDIFFERENTBOOKS',
                    'ANDFROMDIFFERENTPAGES',
                    'MOSLTYTHESAMELENGTHSS',
                    'BUTSOMEWILLBABITSHORT'
                    ]

from collections import defaultdict
coordinates = defaultdict(dict)

for b, p, s in zip(bookCodes, pages, sampledSentances):
    coordinates[b][p] = s

print coordinates

我实际上想做的是,用关联的bookpage信息迭代sampledSentances

通过阅读(以及question I asked yesterday),听起来我应该构建一个iterable类对象

以下是我尝试过的方法,但我不确定如何使用它来迭代sampledSentances,甚至不确定这是否是正确的方法:

# A class to build the object
class Sentence(object):
    def __init__(self, b, p, s):
        self.book     = b
        self.page     = p
        self.sentence = s

    def getInfo(self):
        return self.book, self.page, self.sentence

# Make a list, and append the book, page and sentence generated from the `Sentence` class
sentenceInfo = []
for b, p, s in zip(bookCodes, pages, sampledSentances):
    sentenceInfo.append(Sentence(b, p, s).getInfo())

print(sentenceInfo)

我是Python的新手,任何帮助都将不胜感激


Tags: thefromself信息数据结构pagepagessentence
1条回答
网友
1楼 · 发布于 2024-09-27 21:30:15

使用generator function执行此任务

def iterSentances(bookCodes, pages, sampledSentances):
    zz = list(zip(bookCodes, pages, sampledSentances))
    random.shuffle(zz)
    for ss in zz:
        yield ss

for b,p,s in iterSentances(bookCodes, pages, sampledSentances):
    print(b,p,s)

相关问题 更多 >

    热门问题