def lfu_for_evict(cache_dict, evict_number=1):
    """
    Use LFU(Least Frequently Used) strategy for evicting, the item that number of hits is the least will be removed.

    Test:
    >>> from common_cache import CacheItem
    >>> dict = {}
    >>> dict['a'] = CacheItem(key='a', value=0, expire=5)
    >>> dict['b'] = CacheItem(key='b', value=1, expire=5)
    >>> dict['c'] = CacheItem(key='c', value=2, expire=5)
    >>> len(dict)
    3
    >>> dict['a'].update_hit_count()
    >>> dict['a'].update_hit_count()
    >>> dict['a'].update_hit_count()
    >>> dict['b'].update_hit_count()
    >>> lfu_for_evict(dict)
    ['c']
    >>> lfu_for_evict(dict)
    ['b']
    >>> lfu_for_evict(dict)
    ['a']
    >>> len(dict)
    0
    """
    ordered_dict = sorted(cache_dict.items(), key=lambda t: t[1]['hit_counts'])
    evicted_keys = []
    if len(cache_dict) < evict_number:
        evict_number = len(cache_dict)
    for i in range(evict_number):
        item = ordered_dict[i]
        key = item[0]
        cache_dict.pop(key)
        evicted_keys.append(key)
    return evicted_keys
