如何将三列文件转换为指定结构的Python字典?
实现方法
没问题,我给你几种适配不同文件格式的命令,帮你快速生成目标字典:
场景1:文件每行包含一组三列内容
如果你的文件(比如命名为data.txt)是每行对应一组数据,内容如下:
a 1 4
b 2 5
c 3 6
可以用Python一行命令直接生成字典:
python -c "d = {}; with open('data.txt') as f: [d.update({line.split()[0]: (int(line.split()[1]), int(line.split()[2]))}) for line in f if line.strip()]; print(d)"
解释:打开文件后逐行读取,每行按空格分割后,取第一个元素作为字典的key,把第二、第三个元素转为整数后组成元组作为value,最后打印完整字典。
场景2:文件是单行连续的三元素组
如果你的文件内容是单行的连续元素(比如data.txt里只有一行:a 1 4 b 2 5 c 3 6),可以用以下命令:
Python 3.12+版本(支持itertools.batched)
python -c "import itertools; with open('data.txt') as f: items = f.read().split(); d = {k:(int(v1), int(v2)) for k,v1,v2 in itertools.batched(items, 3)}; print(d)"
兼容旧版Python(3.11及以下)
python -c "with open('data.txt') as f: items = f.read().split(); d = {items[i]:(int(items[i+1]), int(items[i+2])) for i in range(0, len(items), 3)}; print(d)"
解释:先读取文件所有内容并按空格分割成列表,然后每3个元素为一组,第一个作为key,后两个转成整数组成元组作为value。
用awk快速生成字典格式输出
如果你不需要用Python处理,只是要得到字典格式的字符串,也可以用awk命令:
awk '{printf "%s: (%s,%s), ", $1, $2, $3}' data.txt | sed 's/, $//; s/^/{/; s/$/}/'
这个命令会直接输出{'a': (1,4), 'b': (2,5), 'c': (3,6)}格式的结果。
内容的提问来源于stack exchange,提问作者Alexander West
相关产品推荐
相关产品推荐

