Find the year with the most number of people alive in Python
Question: Given a list of people with their birth and end years (all between `1900` and
`2000`), find the year with the most number of people alive.

Here is my somewhat brute-force solution:

    
    
    def most_populated(population, single=True):
        years = dict()
        for person in population:
            for year in xrange(person[0], person[1]):
                if year in years:
                    years[year] += 1
                else:
                    years[year] = 0
        return max(years, key=years.get) if single else \
               [key for key, val in years.iteritems() if val == max(years.values())]
    
    print most_populated([(1920, 1939), (1911, 1944),
                          (1920, 1955), (1938, 1939)])
    print most_populated([(1920, 1939), (1911, 1944),
                          (1920, 1955), (1938, 1939), (1937, 1940)], False)
    

I'm trying to find a more efficient way to solve this problem in `Python`.
Both - `readability` and `efficiency` counts. Moreover, for some reason my
code won't print `[1938, 1939]` while it should.

**Update**

Input is a `list` of tuples, where first element of a tuple is a `year` when
person was born, and second element of a `tuple` is the year of death.

**Update 2**

End year (2nd part of tuple) counts as well as a year of the person being
alive (so If the person dies in `Sept 1939` (we don't care about the month),
he is actually alive in 1939, at least part of it). That should fix the 1939'
missing in results.

**Best solution?**

While readability counts in favor of [@joran-
beasley](http://stackoverflow.com/a/31522489/1554153), for bigger input most
efficient algorithm was provided by
[@njzk2](http://stackoverflow.com/a/31523813/1554153). Thanks @hannes-ovrén
for providing analysis in [IPython notebook on
Gist](https://gist.github.com/hovren/bf5335ba45cd7eee811e)


Answer: 
    >>> from collections import Counter
    >>> from itertools import chain
    >>> def most_pop(pop):
    ...     pop_flat = chain.from_iterable(range(i,j+1) for i,j in pop)
    ...     return Counter(pop_flat).most_common()
    ...
    >>> most_pop([(1920, 1939), (1911, 1944), (1920, 1955), (1938, 1939)])[0]
    

