如何在Python中从字典中提取一个子集

153 阅读3分钟

问题的提出和解决方案概述

这篇文章将告诉你如何在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

这个例子使用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 Comprehensionsorted()来返回前三(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 Comprehensiondict.items()从一个键:值对中提取数值,其中数值 大于指定的数额。

hpower = {key: value for key, value in cars.items() if float(value) >= 220.0}
print(hpower)

上面的代码使用Dictionary Comprehensioncars Dictionary中进行迭代。在迭代过程中,每个都从字符串转换为浮点数,并测试它是否大于或等于 (>=) 220.0。如果True ,则将键:值 对追加到hpower

结果被输出到终端。

{'Chevrolet Impala': '220.0', 'Pontiac Catalina': '225.0', 'Buick Estate Wagon (sw)': '225.0'}

方法4:使用字典理解和in

这个例子使用了 Dictionary Comprehensionin 来提取键:值对,其中的是在指定的 [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 Comprehensioncars 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 Comprehensionenumerate()来进行循环。如果计数器(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种从字典中提取子集的方法,以选择最适合你的编码要求。

祝您好运,编码愉快!