访问字典的列表值

2024-04-29 14:07:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我用以下方法创建了一个列表词典:

names = defaultdict(list)

我正在从文本文件中读取一行,将其分成3列。我将行的第一列作为键,其他两列作为列表中的值。我使用了以下代码段:

^{pr2}$

我有这样的文本文件:

^{3}$

如果我运行程序输出键:值对,输出为:

00:12:34:23:45:67 [['134', '123.456'], ['134', '555.555'], ['136', '555.556'], ['134', '555.560']]

45:34:23:45:44:23 [['133', '345.123']]

3f:32:dr:45:34:r5 [['133', '212.345']]

如何访问列表中的各个元素?例如,在这个输出中,我要计算每个键的133、134、135、136个数以及每种类型之间的时间差。例如,对于键00:12:34:23:45:67,有3134个,1136个。该键134的最高值和最低值之间的时差为555.560-123.456。我想要所有133134135136类型的结果。我为这个问题奋斗了很多天。请帮忙。非常感谢。在


Tags: 方法程序元素类型列表names代码段list
2条回答

这里似乎有更好的数据结构。。。在

from collections import defaultdict
names=defaultdict(lambda :defaultdict(list))

with open('f.txt') as f:
   lines = [l.split() for l in f.readlines() if l.strip()]
   for l in lines:
       names[l[0]][l[1]].append(float(l[2]))

现在,要从max/min得到计数和差值:

^{pr2}$

输出:

00:12:34:23:45:67 136 1 0.0
00:12:34:23:45:67 134 3 432.104
45:34:23:45:44:23 133 1 0.0
3f:32:dr:45:34:r5 133 1 0.0

要计算计数,可以执行以下操作:

counts = {}
for key, values in names.items():
    for v in values:
        if v[0] in counts:
            counts[v[0]] += 1
        else:
            counts[v[0]] = 1

相关问题 更多 >