Если вы выводите много значений из C в dict в Python, есть ли лучший (более быстрый и менее подверженный ошибкам) способ сделать это, чем:
return Py_BuildValue("{s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:d,s:(i,i,i,i),s:(i,i,i,i),s:(i,i,i,i)}",
"jd\0", spa.jd, //Julian day
"jc\0", spa.jc, //Julian century
"jde\0", spa.jde, //Julian ephemeris day
"jce\0", spa.jce, //Julian ephemeris century
"jme\0", spa.jme, //Julian ephemeris millennium
"l\0", spa.l, //earth heliocentric longitude [degrees]
"b\0", spa.b, //earth heliocentric latitude [degrees]
"r\0", spa.r, //earth radius vector [Astronomical Units, AU]
"theta\0", spa.theta, //geocentric longitude [degrees]
"beta\0", spa.beta, //geocentric latitude [degrees]
"x0\0", spa.x0, //mean elongation (moon-sun) [degrees]
"x1\0", spa.x1, //mean anomaly (sun) [degrees]
"x2\0", spa.x2, //mean anomaly (moon) [degrees]
"x3\0", spa.x3, //argument latitude (moon) [degrees]
"x4\0", spa.x4, //ascending longitude (moon) [degrees]
"del_psi\0", spa.del_psi, //nutation longitude [degrees]
"del_epsilon\0", spa.del_epsilon, //nutation obliquity [degrees]
"epsilon0\0", spa.epsilon0, //ecliptic mean obliquity [arc seconds]
"epsilon\0", spa.epsilon, //ecliptic true obliquity [degrees]
"del_tau\0", spa.del_tau, //aberration correction [degrees]
"lamda\0", spa.lamda, //apparent sun longitude [degrees]
"nu0\0", spa.nu0, //Greenwich mean sidereal time [degrees]
"nu\0", spa.nu, //Greenwich sidereal time [degrees]
"alpha\0", spa.alpha, //geocentric sun right ascension [degrees]
"delta\0", spa.delta, //geocentric sun declination [degrees]
"h\0", spa.h, //observer hour angle [degrees]
"xi\0", spa.xi, //sun equatorial horizontal parallax [degrees]
"del_alpha\0", spa.del_alpha, //sun right ascension parallax [degrees]
"delta_prime\0", spa.delta_prime, //topocentric sun declination [degrees]
"alpha_prime\0", spa.alpha_prime, //topocentric sun right ascension [degrees]
"h_prime\0", spa.h_prime, //topocentric local hour angle [degrees],
"h0_prime\0", spa.h0_prime,
"delta_zero\0", spa.delta_zero,
"e0\0", spa.e0, //topocentric elevation angle (uncorrected) [degrees]
"del_e\0", spa.del_e, //atmospheric refraction correction [degrees]
"e\0", spa.e, //topocentric elevation angle (corrected) [degrees]
"eot\0", spa.eot, //equation of time [minutes]
"srha\0", spa.srha, //sunrise hour angle [degrees]
"ssha\0", spa.ssha, //sunset hour angle [degrees]
"sta\0", spa.sta, //sun transit altitude [degrees]
"zenith\0", spa.zenith, //topocentric zenith angle [degrees]
"azimuth180\0", spa.azimuth180, //topocentric azimuth angle (westward from south) [-180 to 180 degrees]
"azimuth\0", spa.azimuth, //topocentric azimuth angle (eastward from north) [ 0 to 360 degrees]
"incidence\0", spa.incidence, //surface incidence angle [degrees]
"_suntransit\0", spa.suntransit, //local sun transit time (or solar noon) [fractional hour]
"_sunrise\0", spa.sunrise, //local sunrise time (+/- 30 seconds) [fractional hour]
"_sunset\0", spa.sunset, //local sunset time (+/- 30 seconds) [fractional hour]
"sunrise\0", sunrise_hour, sunrise_min, sunrise_sec, sunrise_microsec,
"sunset\0", sunset_hour, sunset_min, sunset_sec, sunset_microsec,
"noon\0", transit_hour, transit_min, transit_sec, transit_microsec
);