使用嵌套循环创建键值列表

时间:2019-05-21 19:06:17

标签: python python-3.x python-3.7

因此,我有一个脚本来检查PDF文件中的每一页,然后在每一页上,将PDF文件的文本分成几列。

请考虑以下各列:

{"1":{"position":"15"}, "2":{"position": "50"}}'
pages = {}
npages = 2 #Number of pages in the PDF.
for n in range(npages):

    pages[n + 1] = []

    for i, col in enumerate(COLUMNS):

        out = "Page n Column 1 Text Column 2 Text" #Simplified string.
        pages[n + 1].append({int(i + 1): str(out)})

我的假设是,这将创建一个键值对,例如:

page n: text inside the column

尽管如此,上面的脚本还是创建了这样的一对:

{1: 'Page 1 Column 1 Text'} - {2: 'Page 1 Column 2 Text'}
{1: 'Page 2 Column 1 Text'} - {2: 'Page 2 Column 2 Text'}

如您所见,它创建的密钥如下:

{1: 'Page 1 Column 1 Text'}

假设我想这样做:(输出值用于第一次迭代)

for page, column in pages.values():
    print("Page: {}".format(page)) #Should output: Page: 1
    print("Column Text: {}".format(column)) #Should output: Column Text: Column 1 Text

总而言之,我想要的输出是(其中页码是键,而列文本是值):

{1: 'Page 1 Column 1 Text'}
{1: 'Column 2 Text'}
{2: 'Page 2 Column 1 Text'}
{2: 'Column 2 Text'}

我想念什么?如果这是基础知识,我深表歉意。我是Python的新手。

1 个答案:

答案 0 :(得分:2)

似乎您只想要页面列表:

function withBaseWidget<P>(WrappedComponent: React.ComponentType<P>) {
  return (props: P) => {
    return <BaseWidget><WrappedComponent { ...props } /></BaseWidget>;
  }
}

页面将被定义为:

pages = []
npages = 2  # Number of pages in the PDF.
COLUMNS = ["example1", "example2", "example3"]
for n in range(npages):

    for i, col in enumerate(COLUMNS):
        if i == 0:
            pages.append({n + 1: "Page {} Column {} {}".format(n + 1, i + 1, col)})
        else:
            pages.append({n + 1: "Column {} {}".format(i + 1, col)})

每个评论的更新: 列表不是以这种方式解析内容的理想方法-如果您尝试访问每个页面的列内容,则dict的用法会更有意义。例如:

[{1: 'Page 1 Column 1 example1'},
 {1: 'Column 2 example2'},
 {1: 'Column 3 example3'},
 {2: 'Page 2 Column 1 example1'},
 {2: 'Column 2 example2'},
 {2: 'Column 3 example3'}]

结果将页面定义为:

pages = {}
npages = 2  # Number of pages in the PDF.
COLUMNS = ["example1", "example2", "example3"]
for n in range(npages):
    page_name = "Page {}".format(n + 1)
    pages[page_name] = {}
    for i, col in enumerate(COLUMNS):
        column_name = "Column {}".format(i + 1)
        pages[page_name][column_name] = col