问题的提出和解决方案概述
这篇文章将告诉你如何在Python中从一个字典中提取子集。
我们的文章使用一个名为cars 的字典,包含30个键:值对:名称和相关的马力。
{'Chevrolet Chevelle Malibu': '130.0', 'Buick Skylark 320': '165.0', 'Plymouth Satellite': '150.0', 'AMC Rebel SST': '150.0', 'Ford Torino': '140.0', 'Ford Galaxie 500': '198.0', 'Chevrolet Impala': '220.0', 'Plymouth Fury iii': '215.0', 'Pontiac Catalina': '225.0', 'AMC Ambassador DPL': '190.0', 'Citroen DS-21 Pallas': '115.0', 'Chevrolet Chevelle Concours (sw)': '165.0', 'Ford Torino (sw)': '153.0', 'Plymouth Satellite (sw)': '175.0', 'AMC Rebel SST (sw)': '175.0', 'Dodge Challenger SE': '170.0', "Plymouth 'Cuda 340": '160.0', 'Ford Mustang Boss 302': '140.0', 'Chevrolet Monte Carlo': '150.0', 'Buick Estate Wagon (sw)': '225.0', 'Toyota Corolla Mark ii': '95.0', 'Plymouth Duster': '95.0', 'AMC Hornet': '97.0', 'Ford Maverick': '85.0', 'Datsun PL510': '88.0', 'Volkswagen 1131 Deluxe Sedan': '46.0', 'Peugeot 504': '87.0', 'Audi 100 LS': '90.0', 'Saab 99e': '95.0', 'BMW 2002': '113.0'}
问题:我们如何编写代码来从一个字典中提取子集?
我们可以通过下面的一个选项来完成这个任务。
- 方法1 :使用
dict.items()和[list](https://blog.finxter.com/python-lists/) - 方法2 :使用字典的理解力和
sorted() - 方法3 :使用字典理解和
dict.items() - 方法4:使用字典理解和
[in](https://blog.finxter.com/python-membership-in-operator/) - 方法5:使用字典理解和
enumerate()
方法 1: 使用 dict.items() 和 list
这个例子使用dict.items() 从一个Dictionary 中提取前五 (5) 个key:value对。
first_five = dict(list(cars.items())[:4])
print(first_five)
上面是一个单行代码,通过以下操作从cars 字典中提取前五(5)个key:value对。
- 该
[list()](https://blog.finxter.com/python-lists/)函数被调用并传递一个(1)参数,cars.items()。 - 然后,使用切片(
[:4])提取前五(5)个条目。 - 接下来,该参数
[list](https://blog.finxter.com/python-lists/)被转换回一个字典。
结果被输出到终端。
{'Chevrolet Chevelle Malibu': '130.0', 'Buick Skylark 320': '165.0', 'Plymouth Satellite': '150.0', 'AMC Rebel SST': '150.0'} |
方法2:使用字典理解和sorted()
这个例子使用了Dictionary Comprehension和 sorted()来返回前三(3)个排序的key:value 字典对。
sorted_three = {k: cars[k] for k in sorted(cars.keys())[:3]}
print(sorted_three)
上面的代码根据key:value对的关键 部分对cars Dictionary进行排序,并返回排序后的前三(3)对。
结果将输出到终端。
{'AMC Ambassador DPL': '190.0', 'AMC Hornet': '97.0', 'AMC Rebel SST': '150.0'} |
方法3:使用Dictionary Comprehension dict.items()
这个例子使用了Dictionary Comprehension和 dict.items()从一个键:值对中提取数值,其中数值 大于指定的数额。
hpower = {key: value for key, value in cars.items() if float(value) >= 220.0}
print(hpower)
上面的代码使用Dictionary Comprehension在cars Dictionary中进行迭代。在迭代过程中,每个值都从字符串转换为浮点数,并测试它是否大于或等于 (>=) 220.0。如果True ,则将键:值 对追加到hpower 。
结果被输出到终端。
{'Chevrolet Impala': '220.0', 'Pontiac Catalina': '225.0', 'Buick Estate Wagon (sw)': '225.0'} |
方法4:使用字典理解和in
这个例子使用了 Dictionary Comprehension和in 来提取键:值对,其中的值是在指定的 [list](https://blog.finxter.com/python-lists/).
hpower = {key: value for key, value in cars.items() if float(value) in [115.0, 220.0]}
print(hpower)
上述代码使用Dictionary Comprehension在cars Dictionary中进行迭代。在迭代过程中,每个值 都被从字符串转换为浮点数,并测试该值 是否存在于指定的. [list](https://blog.finxter.com/python-lists/).如果是真的,键:值 对就会被追加到hpower 。
结果将被输出到终端。
{'Chevrolet Impala': '220.0', 'Citroen DS-21 Pallas': '115.0'} |
方法5:使用字典理解和enumerate()
这个例子使用了字典的理解力和 enumerate().这个函数允许你在一个迭代器和相关的计数器上循环,根据一个条件提取特定的键:值对。
top_ten = {kv[0]:kv[1] for i, kv in enumerate(cars.items()) if i <= 10}
print(top_ten)
这段代码使用了Dictionary Comprehension和 enumerate()来进行循环。如果计数器(i)小于或等于(<=)10,那么键:值对被追加到top_ten 。
结果输出到终端
{'Chevrolet Chevelle Malibu': '130.0', 'Buick Skylark 320': '165.0', 'Plymouth Satellite': '150.0', 'AMC Rebel SST': '150.0', 'Ford Torino': '140.0', 'Ford Galaxie 500': '198.0', 'Chevrolet Impala': '220.0', 'Plymouth Fury iii': '215.0', 'Pontiac Catalina': '225.0', 'AMC Ambassador DPL': '190.0', 'Citroen DS-21 Pallas': '115.0'} |
总结
这篇文章提供了5种从字典中提取子集的方法,以选择最适合你的编码要求。
祝您好运,编码愉快!