Optimise many namedtuple assignment statements I'd just like to know if there's a way I can reduce the number of namedtuple assignment statements in the code below. The actual program has over 60 assignment statements and I feel like that could be optimised using some form of loop or maybe a function of some kind. 

I'm not exactly sure how to do this myself, any advice? 

The more pythonic the better, may I add. I'm using Python 3.6.

Here is a reduced section of my code:

from collections import namedtuple
import json

try:
    with open('assets/bin/units.bin', 'r') as file:
        units = json.load(file)
except:
    print('Could not load file.')

Unit = namedtuple('Unit', ['name', 'stats', 'type', 'population', 'cost', 'description'])
Unit.__doc__ += ': Stores data about a single unit, including Name, Stats, Type, Population and Cost.'

#Units(Infantry)
trooper = Unit(units[0]['name'],
               units[0]['stats'],
               units[0]['type'],
               units[0]['population'],
               units[0]['cost'],
               units[0]['description'])
robot = Unit(units[1]['name'],
             units[1]['stats'],
             units[1]['type'],
             units[1]['population'],
             units[1]['cost'],
             units[1]['description'])
commando = Unit(units[2]['name'],
                units[2]['stats'],
                units[2]['type'],
                units[2]['population'],
                units[2]['cost'],
                units[2]['description'])
flame_trooper = Unit(units[3]['name'],
                     units[3]['stats'],
                     units[3]['type'],
                     units[3]['population'],
                     units[3]['cost'],
                     units[3]['description'])
engineer = Unit(units[4]['name'],
                units[4]['stats'],
                units[4]['type'],
                units[4]['population'],
                units[4]['cost'],
                units[4]['description'])

#Units(Vehicles)
truck = Unit(units[5]['name'],
             units[5]['stats'],
             units[5]['type'],
             units[5]['population'],
             units[5]['cost'],
             units[5]['description'])
tank = Unit(units[6]['name'],
            units[6]['stats'],
            units[6]['type'],
            units[6]['population'],
            units[6]['cost'],
            units[6]['description'])
icv = Unit(units[7]['name'],
           units[7]['stats'],
           units[7]['type'],
           units[7]['population'],
           units[7]['cost'],
           units[7]['description'])
railgun = Unit(units[8]['name'],
               units[8]['stats'],
               units[8]['type'],
               units[8]['population'],
               units[8]['cost'],
               units[8]['description'])
missile_launcher = Unit(units[9]['name'],
                        units[9]['stats'],
                        units[9]['type'],
                        units[9]['population'],
                        units[9]['cost'],
                        units[9]['description'])
What if, instead of multiple variables, you would define a list of names, which you then use to create a dictionary of names to Unit instances which are initialized using dictionary unpacking:

names = [
    'trooper',
    'robot',
    'commando',
    'flame_trooper'
]
items = {
    name: Unit(**units[index])
    for index, name in enumerate(names)
}


Please think of better variable names for names and items.