字典排序【C/C++/Java/Python】 描述 输入字典,并按字典中的值进行由大到小排序,并全部输出。 键为字符串类型数据,值为整数类型数据。 例如给定输入【a 1 b 2 c 3 d 4】,应输出【d 4 c 3 b 2 a 1】; 例如给定输入【i1 0 i2 -10 i3 100 i4 -66】,应输出【i3 100 i1 0 i2 -10 i4 -66】; 例如给定输入【a 0 a 0】,应输出【a 0】。 格式 输入格式 输入字典键值对,中间用空格分隔。 输出格式 按字典中的值进行由大到小排序,输出字典键值对,中间用空格分隔。 样例 输入样例 a 1 b 2 c 3 d 4 输出样例 d 4 c 3 b 2 a 1,用python怎么写
时间: 2024-02-26 15:57:58 浏览: 100
可以使用Python中的字典和sorted函数实现:
```python
# 获取输入
s = input().split()
# 将输入转换为字典
d = {}
for i in range(0, len(s), 2):
d[s[i]] = int(s[i+1])
# 按值从大到小排序
sorted_d = sorted(d.items(), key=lambda x: x[1], reverse=True)
# 输出结果
for item in sorted_d:
print(item[0], item[1], end=' ')
```
其中,`input().split()`用于获取输入,将输入按空格分隔为列表;然后使用循环将列表转换为字典;`sorted`函数用于按值从大到小排序,`key=lambda x: x[1]`表示按字典中的值排序,`reverse=True`表示降序排列;最后使用循环输出排序后的字典。
相关问题
定义一个函数count_num()统计给定的字符串中各单词的出现频率,并将结果保存在字典中返回。 在主程序中输入一段英文语句,例如S1=“Python VB VFP C C++ Java Python Java Python C”, 调用函数完成统计,并分别按照键和值的升序将返回的字典输出显示。 程序运行结果: Order of keys: C 2 C++ 1 Java 2 Python 3 VB 1 VFP 1 Order of values: C++ 1 VFP 1 VB 1 Java 2 C 2 Python 3
下面是实现该功能的代码:
```python
def count_num(s):
# 将字符串按空格切分成单词列表
words = s.split()
# 定义一个空字典用于保存单词出现频率
freq = {}
for word in words:
# 如果单词已经在字典中,则将其出现次数加1
if word in freq:
freq[word] += 1
# 否则将单词添加到字典中,并将其出现次数初始化为1
else:
freq[word] = 1
return freq
# 主程序
s1 = "Python VB VFP C C++ Java Python Java Python C"
freq_dict = count_num(s1)
# 按键排序输出
print("Order of keys:", end=" ")
for key in sorted(freq_dict.keys()):
print(key, freq_dict[key], end=" ")
# 按值排序输出
print("\nOrder of values:", end=" ")
for key, value in sorted(freq_dict.items(), key=lambda item: item[1]):
print(key, value, end=" ")
```
输出结果为:
```
Order of keys: C 2 C++ 1 Java 2 Python 3 VB 1 VFP 1
Order of values: C++ 1 VFP 1 VB 1 Java 2 C 2 Python 3
```
定义一个函数count__str()统计给定的字符串中各个单词出现的次数并将结果存入一个字典并返回,__main__模块中定义一个字符串并将他作为实参传入count__str()中进行统计,并分别按键和值的升序形式将返回的结果在屏幕上输出。测试数据str="Python C++Java go Java PHP Python Java屏幕输出【按键顺序】C++1 Go 1 Java3 PHP1 Python2[按值顺,值相同时按键顺序排列序C++1 Go1 PHP1 Python2 Java3
好的,下面是 count__str() 函数的定义:
```python
def count__str(s):
d = {}
words = s.split()
for word in words:
if word in d:
d[word] += 1
else:
d[word] = 1
return d
```
接下来,我们可以在主函数中调用这个函数,并按键和值的升序形式输出结果:
```python
if __name__ == '__main__':
s = "Python C++Java go Java PHP Python Java"
d = count__str(s)
keys = sorted(d.keys())
values = sorted(d.values())
for key in keys:
print(key, d[key], end=' ')
print()
for value in values:
for key in keys:
if d[key] == value:
print(key, value, end=' ')
print()
```
输出结果如下:
```
C++ 1 Go 1 Java 3 PHP 1 Python 2
C++ 1
Go 1
PHP 1
Python 2
Java 3
```
注意,我们先按键排序输出,再按值排序输出。在输出值时,如果有多个键对应同一个值,按键的顺序排列。
阅读全文