一个列表里有五个字典,以每个字典中第二项进行排序
时间: 2024-02-03 14:44:09 浏览: 20
可以使用 Python 的 `sorted` 函数和 `key` 参数来实现:
```python
lst = [{'name': 'Alice', 'age': 25},
{'name': 'Bob', 'age': 30},
{'name': 'Charlie', 'age': 20},
{'name': 'David', 'age': 35},
{'name': 'Eva', 'age': 28}]
sorted_lst = sorted(lst, key=lambda x: x['age'])
print(sorted_lst)
```
这里的 `lambda` 函数是一个匿名函数,用于指定排序的关键字。`x` 是一个字典,`x['age']` 表示取字典中键为 `'age'` 对应的值作为排序依据。输出结果为:
```
[{'name': 'Charlie', 'age': 20},
{'name': 'Alice', 'age': 25},
{'name': 'Eva', 'age': 28},
{'name': 'Bob', 'age': 30},
{'name': 'David', 'age': 35}]
```
相关问题
如果是根据列表中元素的一个特定字典值按优先级排序呢
如果是根据列表中元素的一个特定字典值按优先级排序,可以使用类似上面的代码,只需要在 `key` 函数中返回指定字典值即可。假设要根据每个元素的 `priority` 字典值按优先级排序,可以这样写:
```python
# 假设有以下列表
items = [{'name': 'item1', 'priority': 2},
{'name': 'item2', 'priority': 1},
{'name': 'item3'}]
# 按照 priority 值进行排序
sorted_items = sorted(items, key=lambda x: x.get('priority', 0), reverse=True)
```
这里的 `key` 函数中使用了 `get` 方法获取每个元素的 `priority` 值,如果该值不存在则默认为0。`reverse=True` 表示按照降序排列,如果要升序排列则可以将其设置为 `False`。最终排序结果中,元素 `item1` 的 `priority` 值最高,排在第一位。
统计一个文本文件中每个单词出现的次数,输出结果按照单词的字典序排序的代码
可以使用以下代码实现:
```python
rdd = sc.textFile("file.txt")
result = rdd.flatMap(lambda x: x.split(" ")).map(lambda x: (x, 1)).reduceByKey(lambda x, y: x + y).sortByKey()
print(result.collect())
```
首先使用textFile方法读取文本文件中的内容,并创建一个RDD。接着使用flatMap方法将每行文本转换为单词,然后使用map方法将每个单词映射为一个新的二元组,第一个元素为单词本身,第二个元素为1。接着使用reduceByKey方法对相同单词的计数进行累加,最终得到每个单词出现次数的统计结果。最后使用sortByKey方法按照单词的字典序进行排序,并使用collect方法将结果收集到Driver端并输出。