【发布时间】: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_itemList是 empty . -
您使用列表元素作为同一列表的索引;您还尝试分配到空列表中不存在的位置。
-
这里有一个功能可以满足您的需求:
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