【问题标题】:How to do an insertion sort on a list of dictionaries in python?如何对python中的字典列表进行插入排序?
【发布时间】:2013-04-04 01:24:03
【问题描述】:

我有一个包含各种键的字典列表,它们都是整数,我需要编写一个函数,它使用插入排序来按特定键对它们进行排序。

def insertionsort(alldata, key):
    for i in alldata :
    temp = alldata[i]
    j = i
    while j > 0 and alldata[i['key']] < alldata[j - 1['key']]: # no idea how to put this
        alldata[j] = alldata[j-1]
    alldata[j] = temp

【问题讨论】:

  • 您这样做是为了教育目的吗?如果不只是使用 sortkey 参数。
  • @Igonato 是的,用于教育目的!
  • 您需要在 for 循环之后缩进所有内容。此外,您可以使用for (key_a, key_b) in (dict_a, dict_b): 获取密钥,然后在第二个 for 循环中进行比较。
  • @movrev 非常感谢!我理解缩进部分,但不幸的是,由于我对 python 很陌生,我不知道如何完成你建议的第二部分,你能告诉我一些示例代码吗?
  • 我的意思是让你像这样使用它:for (key_i, key_j) in (alldata[i], alldata[j-1]):.

标签: python list dictionary insertion-sort


【解决方案1】:

i['key'] 看起来像个错误。你没有在这里使用你的 key 变量。

尝试alldata[i][key] &lt; alldata[j - 1][key] 作为条件

您还需要在 while 循环中更改 j,否则它会一直运行

def insertionsort(alldata, key):
    for i in alldata :
        temp = alldata[i]
        j = i
        while j > 0 and alldata[i][key] < alldata[j - 1][key]:
           alldata[j] = alldata[j - 1]
           j -= 1
        alldata[j] = temp

【讨论】:

    【解决方案2】:

    for 循环之后的每一件事都应该再缩进 1 次(无论你使用多少个空格来缩进) 至于其他问题,我不知道。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-22
      • 2016-06-11
      相关资源
      最近更新 更多