Take the 2-minute tour ×
Code Review Stack Exchange is a question and answer site for peer programmer code reviews. It's 100% free, no registration required.

I would like to display this data, callable at any time, but I'm not sure if this is the best practice to do so.

countries = [
   dict(Name = "China", Population = "1,363,560,000"),
   dict(Name = "India", Population = "1,242,070,000"),
   dict(Name = "United States", Population = "317,768,000"),
   dict(Name = "Indonesia", Population = "249,866,000"),
   dict(Name = "Brazil", Population = "201,032,714"),
   dict(Name = "Pakistan", Population = "186,015,000"),
   dict(Name = "Nigeria", Population = "173,615,000"),
   dict(Name = "Bangladesh", Population = "152,518,015"),
   dict(Name = "Russia", Population = "143,700,000"),
   dict(Name = "Japan", Population = "127,120,000"),
   dict(Name = "Mexico", Population = "119,713,203"),
   dict(Name = "Philippines", Population = "99,329,000"),
   dict(Name = "Vietnam", Population = "89,708,900"),
   dict(Name = "Egypt", Population = "86,188,600"),
   dict(Name = "Germany", Population = "80,716,000"),
   dict(Name = "Iran", Population = "77,315,000"),
   dict(Name = "Turkey", Population = "76,667,864"),
   dict(Name = "Thailand", Population = "65,926,261"),
   dict(Name = "France", Population = "65,844,000"),
   dict(Name = "United Kingdom", Population = "63,705,000"),
   dict(Name = "Italy", Population = "59,996,777"),
   dict(Name = "South Africa", Population = "52,981,991"),
   dict(Name = "South Korea", Population = "50,219,669"),
   dict(Name = "Colombia", Population = "47,522,000"),
   dict(Name = "Spain", Population = "46,609,700"),
   dict(Name = "Ukraine", Population = "45,410,071"),
   dict(Name = "Kenya", Population = "44,354,000"),
   dict(Name = "Argentina", Population = "40,117,096"),
   dict(Name = "Poland", Population = "38,502,396"),
   dict(Name = "Sudan", Population = "37,964,000"),
   dict(Name = "Uganda", Population = "35,357,000"),
   dict(Name = "Canada", Population = "35,344,962"),
   dict(Name = "Iraq", Population = "34,035,000"),
   ]

print countries 
share|improve this question
    
And what, exactly, does this question have to do with code review? Nothing! Is our new policy that anything goes as long as it is easy to answer and tangentially includes the words 'best practice'? This code does not display the data; the question is clearly about how solve the problem, not how to improve the existing code. –  codesparkle Apr 29 at 21:41
add comment

2 Answers 2

up vote 6 down vote accepted

To format the data nicely for printing you can use the ljust method:

print "Country".ljust(15),"Population"
for country in countries:
    print country["Name"].ljust(15), country["Population"]
share|improve this answer
    
Thanks a ton. I'll eventually have my game on here I'm building with this for review. –  techteej Mar 30 at 2:23
add comment

Starting with the data structure you have (a list of dicts), whose entries are already sorted in descending order of population, it appears that you want the output as a table.

The country name should probably be left justified. The population, being numeric, should probably be right justified. You'll have to decide on some arbitrary column widths.

Python has built in formatting capability to accomplish this, with the ability to extract fields out of a dictionary.

You could define a function that is callable from anywhere.

def print_countries(countries):
    for c in countries:
        print "%(Name)-16s%(Population)16s" % (c)

For flexibility, you could define a stringifying function instead of a printing function.

def countries_to_str(countries):
    return "\n".join(["%(Name)-16s%(Population)16s" % (c) for c in countries])

Then you have the flexibility to output the result of countries_to_str(countries) anywhere you want, such as a file.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.