rgerts
rgerts

Reputation: 71

Python list Merging

I am getting list output like this, I want to make clear separation between lists so that I can access each list separately how do I do that

for Book in rootNode.getBooks():
    CompareTables=[]
    CompareTables.append(Book.getName())
    for Table in Book.getTables():
        CompareTables.append(Table.getName())
    print CompareTables

Output:

['Document', 'A','B','C']
['Document', 'A','B','C','D','E','F']

I want output like this:

print CompareTables1

Output:

 ['Document', 'A','B','C']

print CompareTables2

 ['Document', 'A','B','C','D','E','F']

Upvotes: 0

Views: 188

Answers (2)

Martijn Pieters
Martijn Pieters

Reputation: 1121494

Create a new list to add your per-book lists to:

all_compare_tables = []
for Book in rootNode.getBooks():
    CompareTables=[]
    CompareTables.append(Book.getName())
    for Table in Book.getTables():
        CompareTables.append(Table.getName())
    all_compare_tables.append(CompareTables)

print all_compare_tables[0]
print all_compare_tables[1]

# better yet, loop:

for compare_tables in all_compare_tables:
    print compare_tables

Alternatively, you could use a dictionary:

all_compare_tables = {}
for i, Book in enumerate(rootNode.getBooks(), 1):
    CompareTables=[]
    CompareTables.append(Book.getName())
    for Table in Book.getTables():
        CompareTables.append(Table.getName())
    all_compare_tables['CompareTables{}'.format(i)] = CompareTables

The above example generates keys as CompareTables1, CompareTables2, etc. but perhaps you had better names in mind.

Printing these then becomes:

print all_compare_tables['CompareTables1']
print all_compare_tables['CompareTables2']

or loop over the all_compare_tables.keys() or all_compare_tables.values() sequences.

Upvotes: 3

Emmanuel
Emmanuel

Reputation: 14209

Well, a dict is made for such cases:

CompareTables = {}
for Book in rootNode.getBooks():
    book_name = Book.getName()
    CompareTables[book_name] = []
    for Table in Book.getTables():
        CompareTables[book_name].append(Table.getName())
    print CompareTables

Here your 2 books seem to have same title Document, so you can use an index to differentiate them:

CompareTables = {}
for i, Book in enumerate(rootNode.getBooks(), 1):
    book_name = Book.getName() + str(i)
    CompareTables[book_name] = []
    for Table in Book.getTables():
        CompareTables[book_name].append(Table.getName())
    print CompareTables

Upvotes: 0

Related Questions