【问题标题】:Python 3.6 converting dictionary to a sorted list [duplicate]Python 3.6将字典转换为排序列表[重复]
【发布时间】:2020-03-17 19:52:09
【问题描述】:

我正在尝试在 Python 3.6 中编写一个函数,该函数将字典的内容作为列表返回,并根据键以降序排序。

示例测试用例如下:

输入:{'y':1, 'z':1, 'x':1} | {3:['x','y'], 100:['z']}

所需输出:[{'z':1},{'y':1},{'x':1}] | [{100:['z']}, {3:['x', 'y']}]

def sorted_dict_content(key_val):
    # create an empty list
    key_itemList = []
    # for each key in sorted list of keys of key_val:
    # append the key-value pair to key_itemList
    for i in key_val:
        key_itemList[key_val[i]].append(i)
        sorted(key_val.key(), reverse=True)
    return key_itemList

但是,当我运行程序时,我得到了 IndexError: list index out of range。我对sorted() 也没有运气。

感谢您的帮助。

【问题讨论】:

  • key_itemList[key_val[i]].append(i)?! key_itemList 是一个空列表,但您尝试使用 key_val[i] 对其进行索引(又名检索列表的 key_val[i]th 元素),这是不可能的,因为 key_itemListempty .
  • 您使用列表元素作为同一列表的索引;您还尝试分配到空列表中不存在的位置。
  • 这里有一个功能可以满足您的需求:def f(D): return [{k: D[k]} for k in sorted(D.keys(), reverse=True)]
  • ^类似于授予只使用.items():[{key: val} for key, val in sorted(dic.items(), reverse=True)]
  • @Prune 这似乎与链接的问题完全不同。它获取一个包含许多键值对的字典,并返回一个按键降序排序的单键值对字典列表。

标签: python list dictionary tuples python-3.6


【解决方案1】:

尝试通过list[something] = something else 分配给列表将尝试访问something-index 处的列表,而不是通过添加something-index 来扩展列表,这与dict 的行为不同。将键值对附加到列表的正确方法是

key_ItemList.append({key_val[i]:i})

【讨论】:

    猜你喜欢
    • 2019-11-18
    • 2019-09-28
    • 2017-07-31
    • 2011-10-17
    • 2017-10-01
    • 2019-11-27
    • 2020-03-19
    • 2016-01-10
    • 2020-11-11
    相关资源
    最近更新 更多