code: def buildPrices(data, roles=None, regex=default_price_regex,
                  default=None, additional={}):
      ''' Create a dictionary with price information. Multiple ways are
          supported.
          :rtype: :obj:`dict`: keys are role as str, values are the prices as
               cent count'''
      if isinstance(data, dict):
          data = [(item[0], convertPrice(item[1])) for item in data.items()]
          return dict([v for v in data if v[1] is not None])
      elif isinstance(data, (str, float, int)) and not isinstance(data, bool):
          if default is None:
              raise ValueError('You have to call setAdditionalCharges '
                               'before it is possible to pass a string as price')
          basePrice = convertPrice(data)
          if basePrice is None:
              return {}
          prices = {default: basePrice}
          for role in additional:
              extraCharge = convertPrice(additional[role])
              if extraCharge is None:
                  continue
              prices[role] = basePrice + extraCharge
          return prices
      elif roles:
          prices = {}
          priceRoles = iter(roles)
          for priceData in data:
              price = convertPrice(priceData)
              if price is None:
                  continue
              prices[next(priceRoles)] = price
          return prices
      else:
          raise TypeError('This type is for prices not supported!')