Python 如何解释返回前n个值时的关系?

Python 如何解释返回前n个值时的关系?,python,dictionary,Python,Dictionary,我有一本从Twitter收集的顶级价值字典,下面是一个小例子: {'aberdeen': 5, 'amsterdam': 6, 'amsterdam?fussa': 6, 'anchorage': 12, 'andalucia?granada': 5, 'ann arbor': 6, 'aral': 6, 'arlington': 6, 'asia?london': 6, 我有两个返回前n个结果的功能: def top_items(item_counts, n=3):

我有一本从Twitter收集的顶级价值字典,下面是一个小例子:

{'aberdeen': 5,
 'amsterdam': 6,
 'amsterdam?fussa': 6,
 'anchorage': 12,
 'andalucia?granada': 5,
 'ann arbor': 6,
 'aral': 6,
 'arlington': 6,
 'asia?london': 6,
我有两个返回前n个结果的功能:

def top_items(item_counts, n=3):
    counts = Counter(item_counts)
    most_common = counts.most_common(n)
    for item in zip(*most_common):
        return list(item)

两者都检索前n个结果。然而,我在解释关系时遇到了一些问题。在本例中,排名前几位的城市是[‘洛杉矶’、‘芝加哥’、‘丹佛’],然而丹佛和纽约市的计数都是8,但它返回丹佛是因为它的第一个字母是按字母顺序排列的

我如何编辑我的代码以返回包括ties在内的前n个值的字典键


谢谢

您可以首先通过排序找到顶部值,并将其与所有值进行比较:

di = {'aberdeen': 5,
      'amsterdam': 6,
      'amsterdam?fussa': 6,
      'anchorage': 12,
      'andalucia?granada': 5,
      'ann arbor': 6,
      'aral': 6,
      'arlington': 6,
      'asia?london': 6
      }

def getTopResults(di: dict, n):
    final = {}
    topValues = sorted(di.values())[:n+1]
    for k, v in di.items():
        if v in topValues:
            final[k] = v

    return final

print(getTopResults(di, 2)) # {'aberdeen': 5, 'amsterdam': 6, 'amsterdam?fussa': 6, 'andalucia?granada': 5, 'ann arbor': 6, 'aral': 6, 'arlington': 6, 'asia?london': 6}

您可以首先通过排序找到顶部值,并将其与所有值进行比较:

di = {'aberdeen': 5,
      'amsterdam': 6,
      'amsterdam?fussa': 6,
      'anchorage': 12,
      'andalucia?granada': 5,
      'ann arbor': 6,
      'aral': 6,
      'arlington': 6,
      'asia?london': 6
      }

def getTopResults(di: dict, n):
    final = {}
    topValues = sorted(di.values())[:n+1]
    for k, v in di.items():
        if v in topValues:
            final[k] = v

    return final

print(getTopResults(di, 2)) # {'aberdeen': 5, 'amsterdam': 6, 'amsterdam?fussa': 6, 'andalucia?granada': 5, 'ann arbor': 6, 'aral': 6, 'arlington': 6, 'asia?london': 6}
输出

['anchorage',
 'amsterdam',
 'amsterdam?fussa',
 'ann arbor',
 'aral',
 'arlington',
 'asia?london']
输出

['anchorage',
 'amsterdam',
 'amsterdam?fussa',
 'ann arbor',
 'aral',
 'arlington',
 'asia?london']

所以你想要一组结果,对吗?难道你就不能排序并使用[:3]?所以你想要一组正确的结果吗?你就不能排序并使用[:3]吗?