我试着让我的字典的输出按照它们的值而不是键排序
问题:
接受列表作为参数的ValueCount。函数将返回元组列表。每个元组将包含一个值以及该值在列表中出现的次数
预期结果
>>> data = [1,2,3,1,2,3,5,5,4]
>>> ValueCount(data)
[(1, 2), (2, 2), (5, 1), (4, 1)]
我的准则和结果
def CountValues(data):
dict1 = {}
for number in data:
if number not in dict1:
dict1[number] = 1
else:
dict1[number] += 1
tuple_data = dict1.items()
lst = sorted(tuple_data)
return(lst)
>>>[(1, 2), (2, 2), (3, 2), (4, 1), (5, 2)]
我如何使用值而不是键对其进行升序排序
如果要按值排序(每个元组中的第二项),请指定
key
:或与^{} 一起:
另请注意,您的计数代码:
可以用^{} 简化:
考虑到以上所有因素,您的代码可能会如下所示:
在关键参数的帮助下,您可以使用排序的。这不是就地分拣。因此,它从不修改原始数组
for more
“Sort”函数使用数据的第一个元素。 要按字典的值对其进行排序,您可以使用for loop for value:
如果不将
sorted(d.values())
转换为set{}
,它将检查每个值,即使有相同的数字。例如,如果您的值列表为[1,2,2,3]
,它将检查值为“2”的项目两次,因此您的排序列表将包含重复的数据,这两个数据都有值“2”。但是set{}
只保留每个元素中的一个,在这种情况下,for循环将检查d.values()
的每个不同值。如果有具有相同值的项,代码将按键对它们进行排序,因为sorted(d.items())
。 (为了更好地理解,您可以在不使用set{}
的情况下使用此代码,并使用d.items()
而不是sorted(d.items())
)相关问题 更多 >
编程相关推荐