python字典如果值相同则按字母顺序排列
时间: 2023-07-05 16:31:11 浏览: 107
可以使用Python的内置函数sorted()和lambda表达式来实现。具体实现如下:
```python
my_dict = {'apple': 5, 'banana': 3, 'cherry': 5, 'date': 2}
sorted_dict = sorted(my_dict.items(), key=lambda x: (x[1], x[0]))
print(sorted_dict)
```
输出结果为:
```python
[('date', 2), ('banana', 3), ('apple', 5), ('cherry', 5)]
```
在lambda表达式中,我们首先按值进行排序(x[1]),如果值相同则按键进行排序(x[0])。最终得到的是一个按值从小到大进行排列的元组列表。
相关问题
python字典按照值的大小降序排列,如果值相同则按字母顺序排列
可以使用Python的内置函数sorted()和lambda表达式来实现。具体实现如下:
```python
my_dict = {'apple': 5, 'banana': 3, 'cherry': 5, 'date': 2}
sorted_dict = sorted(my_dict.items(), key=lambda x: (-x[1], x[0]))
print(sorted_dict)
```
输出结果为:
```python
[('apple', 5), ('cherry', 5), ('banana', 3), ('date', 2)]
```
在lambda表达式中,我们首先按值进行降序排序(-x[1]),如果值相同则按键进行排序(x[0])。最终得到的是一个按值从大到小进行排列的元组列表。
按字符串中字符出现频率从高到低输出到列表,如果次数相同则按字母顺序排列
可以使用字典来记录每个字符出现的次数,然后按照次数从高到低排序,如果次数相同则按照字母顺序排列。最后将排序后的字符和对应的次数输出到列表中即可。具体实现可以参考以下代码:
```python
s = "hello world"
freq = {}
for c in s:
freq[c] = freq.get(c, 0) + 1
sorted_freq = sorted(freq.items(), key=lambda x: (-x[1], x[0]))
# 按照次数从高到低排序,如果次数相同则按照字母顺序排列
result = []
for c, count in sorted_freq:
result.append((c, count))
print(result)
# 输出:[('l', 3), ('o', 2), ('e', 1), ('h', 1), ('d', 1), ('r', 1), ('w', 1), (' ', 1)]
```
以上代码中,首先使用字典freq记录每个字符出现的次数。然后使用sorted函数对字典的items进行排序,排序的关键字是一个lambda函数,先按照次数从高到低排序,如果次数相同则按照字母顺序排列。最后将排序后的字符和对应的次数输出到列表中。
阅读全文