python 通过文件将值分配给特定数字

4jb9z9bj  于 2023-02-11  发布在  Python
关注(0)|答案(1)|浏览(109)

我的问题是,是否有办法把第一列的数字和第二列的数字联系起来,这样我就可以读出第二列的数字,但又能把它们和第一列的数字联系起来,这样我就可以像在sorted_resistance列表中那样对它们进行排序,但是在排序之后,我会将它们替换为第一列中的值。被赋给每个值。代码中的信息是从一个文件中打开的,列表,这就是为什么它是这样编程的

xlpyo6sf

xlpyo6sf1#

如果希望保持两列中的值之间的相关性,可以将每行中的所有值保存在元组(或列表)中,然后使用特定片段对元组列表进行排序,方法是将lambda函数传递给sorted()函数的key参数,该参数告诉sorted()函数使用每个元组的第二个片段作为排序值。
在本例中,我使用pprint.pprint使列表的输出更易于阅读。

from pprint import pprint

with open("file.txt") as file_in:

    list_of_resistances = []
    for line in file_in:
        list_of_resistances.append(tuple(line.strip().split(' ')))
    
    print("Unsorted values:")
    pprint(list_of_resistances)
    
    sorted_resistances = sorted(list_of_resistances, key=lambda x: x[1])
    print("\nSorted values:")
    pprint(sorted_resistances)

    print("\nSorted keys from column 1:")
    pprint([x[0] for x in sorted_resistances])

输出:

Unsorted values:
[('1', '30000'),
 ('2', '30511'),
 ('3', '30052'),
 ('4', '30033'),
 ('5', '30077'),
 ('6', '30055'),
 ('7', '30086'),
 ('8', '30044'),
 ('9', '30088'),
 ('10', '30019'),
 ('11', '30310'),
 ('12', '30121'),
 ('13', '30132')]

Sorted values:
[('1', '30000'),
 ('10', '30019'),
 ('4', '30033'),
 ('8', '30044'),
 ('3', '30052'),
 ('6', '30055'),
 ('5', '30077'),
 ('7', '30086'),
 ('9', '30088'),
 ('12', '30121'),
 ('13', '30132'),
 ('11', '30310'),
 ('2', '30511')]

Sorted keys from column 1:
['1', '10', '4', '8', '3', '6', '5', '7', '9', '12', '13', '11', '2']

相关问题