Python 3.x 基于电阻器值的排序表(列表)
我正在尝试使用Python3对第三列的电阻值表进行排序,以便根据后缀(即K、m等)对值进行正确排序。。下表是一个列表Python 3.x 基于电阻器值的排序表(列表),python-3.x,Python 3.x,我正在尝试使用Python3对第三列的电阻值表进行排序,以便根据后缀(即K、m等)对值进行正确排序。。下表是一个列表 Thick Film 0 .1W - Thick Film 0 .125W - Trimmer 100K - - Thermistor
Thick Film 0 .1W -
Thick Film 0 .125W -
Trimmer 100K - -
Thermistor 1206 10K - -
Thick Film 10K .25W 5%
Thin Film 0603 10K .1W 1%
Trimmer 10K - -
Thin Film 17.4K .125W 1%
Thick Film 18 - -
Thick Film 0805 1K - 5%
Thick Film 1K - -
Trimmer 20K - -
Thick Film 22K .5W 0.5%
Thick Film 0805 270 - 1%
Thick Film 2K .25W -
Thick Film 2K .125W 1%
Thin Film 0603 2K .1W 1%
Thin Film 1206 2K - 0.1%
Trimmer 2K - -
Thin Film 0805 3.9K - 0.5%
Thick Film 4.7K .125W 1%
Thick Film 0805 47k .125W 5%
Thin Film 50 .1W -
Trimmer 50K - -
Trimmer 5K - -
Thick Film 0805 60.4K .5W 1%
Thick Film 0805 71.5K .5W 1%
Thin Film 0805 75 - 0.5%
Thick Film 0805 75K .5W 1%
Thick Film 8.06 .1W -
part_list = [['Thick Film ', '0805', '47k', '.125W', '5%'], ['Thick Film ', '0805', '270', '-', '1%'], ['Thick Film ', '0805', '1K', '-', '5%'], ['Thick Film ', '0805', '60.4K', '.5W', '1%'], ['Thick Film ', '0805', '71.5K', '.5W', '1%'], ['Thick Film ', '0805', '75K', '.5W', '1%'], ['Thick Film ', '', '0', '.1W', '-'], ['Thick Film ', '', '8.06', '.1W', '-'], ['Thick Film ', '', '2K', '.25W', '-'], ['Thick Film ', '', '10K', '.25W', '5%'], ['Thick Film ', '', '0', '.125W', '-'], ['Thick Film ', '', '2K', '.125W', '1%'], ['Thick Film ', '', '4.7K', '.125W', '1%'], ['Thick Film ', '', '18', '-', '-'], ['Thick Film ', '', '1K', '-', '-'], ['Thick Film ', '', '22K', '.5W', '0.5%'], ['Thin Film ', '', '-', '-', '-'], ['Thin Film ', '0603', '10K', '.1W', '1%'], ['Thin Film ', '0603', '2K', '.1W', '1%'], ['Thin Film ', '0805', '3.9K', '-', '0.5%'], ['Thin Film ', '0805', '75', '-', '0.5%'], ['Thin Film ', '', '50', '.1W', '-'], ['Thin Film ', '', '17.4K', '.125W', '1%'], ['Thin Film ', '1206', '2K', '-', '0.1%'], ['Trimmer ', '', '100K', '-', '-'], ['Trimmer ', '', '10K', '-', '-'], ['Trimmer ', '', '20K', '-', '-'], ['Trimmer ', '', '2K', '-', '-'], ['Trimmer ', '', '50K', '-', '-'], ['Trimmer ', '', '5K', '-', '-'], ['Trimmer ', '', '-', '-', '-']]
from operator import itemgetter
sorted_list = sorted(part_list, key=itemgetter(2))
for part in sorted_list:
print("{:<15s}{:>12s}{:>14s} {:<6s}{:>8s}".format(part[0], part[1], part[2], part[3], part[4], '\n'))
编辑:我刚刚注意到代码示例列表中的第三列中有欧姆,忽略它。它应该只是一个没有后缀的数值,或者在数字后面有一个K或M后缀
编辑2:刚刚用正确的列表修复了上面的问题。我的格式有问题,表格下面的代码示例需要分开。谢谢大家!谢谢你,安德烈!获取索引器:列表索引超出范围:num,km=re.findallr'\d+\.?\d*k | m?',k[2],re.I[0],否则我喜欢这种简单性!好的,我看到在数据列表中有4个带“-”的项,因为值未知。我仍然需要这些行,我可以使用什么值来表示未知,以便它可以与您的代码一起工作?零是一个有效值,所以我不能使用它。编辑:可能是“.”?@sdproto您可以用-1表示它们。然后将这些项目放在第一位。我编辑了regexp以接受负值。尝试了-1,但仍然得到错误:num,km=re.findallr'\d+\.?\d*k | m?',k[2],re.I ValueError:没有足够的值来解包预期的2,得到1个hanks Andrej,这很有效!非常感谢你的帮助!
import re
part_list = [['Thick Film ', '', '0 ohms', '.1W', '-'], ['Thick Film ', '', '0 ohms', '.125W', '-'], ['Thick Film ', '0805', '1.0K ohms', '-', '5%'], ['Trimmer ', '', '100K ohms', '-', '-'], ['Thermistor', '1206', '10K ohms', '-', '-'], ['Thick Film ', '', '10K ohms', '.25W', '5%'], ['Thin Film ', '0603', '10K ohms', '.1W', '1%'], ['Trimmer ', '', '10K ohms', '-', '-'], ['Thin Film ', '', '17.4K ohms', '.125W', '1%'], ['Thick Film ', '', '18 ohms', '-', '-'], ['Thick Film ', '', '1K ohms', '-', '-'], ['Thick Film ', '', '2.0K ohms', '.25W', '-'], ['Trimmer ', '', '20K ohms', '-', '-'], ['Thick Film ', '', '22K ohms', '.5W', '0.5%'], ['Thick Film ', '0805', '270 ohms', '-', '1%'], ['Thick Film ', '', '2K ohms', '.125W', '1%'], ['Thin Film ', '0603', '2K ohms', '.1W', '1%'], ['Thin Film ', '1206', '2K ohms', '-', '0.1%'], ['Trimmer ', '', '2K ohms', '-', '-'], ['Thin Film ', '0805', '3.9K ohms', '-', '0.5%'], ['Thick Film ', '', '4.7K ohms', '.125W', '1%'], ['Thick Film ', '0805', '47k ohms', '.125W', '5%'], ['Thin Film ', '', '50 ohms', '.1W', '-'], ['Trimmer ', '', '50K ohms', '-', '-'], ['Trimmer ', '', '5K ohms', '-', '-'], ['Thick Film ', '0805', '60.4K ohms', '.5W', '1%'], ['Thick Film ', '0805', '71.5K ohms', '.5W', '1%'], ['Thin Film ', '0805', '75 ohms', '-', '0.5%'], ['Thick Film ', '0805', '75K ohms', '.5W', '1%'], ['Thick Film ', '', '8.06 ohms', '.1W', '-']]
def key_fn(k):
num, km = re.findall(r'(-?\d+\.?\d*)(k|m)?', k[2], re.I)[0]
return float(num) * {'':1, 'K':1_000, 'M':1_000_000}[str.upper(km)]
for v in sorted(part_list, key=key_fn):
print(('{:<15}'*5).format(*v))
import re
part_list = [['Thick Film ', '', '0 ohms', '.1W', '-'], ['Thick Film ', '', '0 ohms', '.125W', '-'], ['Thick Film ', '0805', '1.0K ohms', '-', '5%'], ['Trimmer ', '', '100K ohms', '-', '-'], ['Thermistor', '1206', '10K ohms', '-', '-'], ['Thick Film ', '', '10K ohms', '.25W', '5%'], ['Thin Film ', '0603', '10K ohms', '.1W', '1%'], ['Trimmer ', '', '10K ohms', '-', '-'], ['Thin Film ', '', '17.4K ohms', '.125W', '1%'], ['Thick Film ', '', '18 ohms', '-', '-'], ['Thick Film ', '', '1K ohms', '-', '-'], ['Thick Film ', '', '2.0K ohms', '.25W', '-'], ['Trimmer ', '', '20K ohms', '-', '-'], ['Thick Film ', '', '22K ohms', '.5W', '0.5%'], ['Thick Film ', '0805', '270 ohms', '-', '1%'], ['Thick Film ', '', '2K ohms', '.125W', '1%'], ['Thin Film ', '0603', '2K ohms', '.1W', '1%'], ['Thin Film ', '1206', '2K ohms', '-', '0.1%'], ['Trimmer ', '', '2K ohms', '-', '-'], ['Thin Film ', '0805', '3.9K ohms', '-', '0.5%'], ['Thick Film ', '', '4.7K ohms', '.125W', '1%'], ['Thick Film ', '0805', '47k ohms', '.125W', '5%'], ['Thin Film ', '', '50 ohms', '.1W', '-'], ['Trimmer ', '', '50K ohms', '-', '-'], ['Trimmer ', '', '5K ohms', '-', '-'], ['Thick Film ', '0805', '60.4K ohms', '.5W', '1%'], ['Thick Film ', '0805', '71.5K ohms', '.5W', '1%'], ['Thin Film ', '0805', '75 ohms', '-', '0.5%'], ['Thick Film ', '0805', '75K ohms', '.5W', '1%'], ['Thick Film ', '', '8.06 ohms', '.1W', '-']]
def key_fn(k):
num, km = re.findall(r'(-?\d+\.?\d*)(k|m)?', k[2], re.I)[0]
return float(num) * {'':1, 'K':1_000, 'M':1_000_000}[str.upper(km)]
for v in sorted(part_list, key=key_fn):
print(('{:<15}'*5).format(*v))
Thick Film 0 ohms .1W -
Thick Film 0 ohms .125W -
Thick Film 8.06 ohms .1W -
Thick Film 18 ohms - -
Thin Film 50 ohms .1W -
Thin Film 0805 75 ohms - 0.5%
Thick Film 0805 270 ohms - 1%
Thick Film 0805 1.0K ohms - 5%
Thick Film 1K ohms - -
Thick Film 2.0K ohms .25W -
Thick Film 2K ohms .125W 1%
Thin Film 0603 2K ohms .1W 1%
Thin Film 1206 2K ohms - 0.1%
Trimmer 2K ohms - -
Thin Film 0805 3.9K ohms - 0.5%
Thick Film 4.7K ohms .125W 1%
Trimmer 5K ohms - -
Thermistor 1206 10K ohms - -
Thick Film 10K ohms .25W 5%
Thin Film 0603 10K ohms .1W 1%
Trimmer 10K ohms - -
Thin Film 17.4K ohms .125W 1%
Trimmer 20K ohms - -
Thick Film 22K ohms .5W 0.5%
Thick Film 0805 47k ohms .125W 5%
Trimmer 50K ohms - -
Thick Film 0805 60.4K ohms .5W 1%
Thick Film 0805 71.5K ohms .5W 1%
Thick Film 0805 75K ohms .5W 1%
Trimmer 100K ohms - -