gpt4 book ai didi

Python - 唯一化(!)字典键

转载 作者:太空宇宙 更新时间:2023-11-04 11:04:49 26 4
gpt4 key购买 nike

我有来自机器的数据(通过 pexpect),我使用正则表达式将其解析成这样的字典

for line in stream:
if '/' in line:
# some matching etc which results in getting the
# machine name, an interface and the data for that interface
key=str(hostname)+":"+r.groups()[0][0:2]+r.groups()[2]
dict[key]=str(line[3])

一切正常,当我读回它时,我得到了很多这样的行

machine1:fe0 <data>  

<data>是一个字符串或整数

我现在意识到接口(interface)可以存在多个数据,似乎在这种情况下,我每次遇到它都会覆盖键的值。我想要的是以突出该界面存在多个信息这一事实的方式使 key 独一无二。例如。如果 fe0 有 3 个实例或者 fe1 有 4 个

machine1:fe0:3 <data> <data> <data>
machine1:fe1:4 <data> <data> <data> <data>

为此,我不介意单个实例后面是否有一个 1 来告诉我这一点。
希望这是清楚的,有人可以指出我正确的方向 - 非常感谢

最佳答案

您可以为每个键创建一个列表,保存该键的所有值:

d = collections.defaultdict(list)
for line in stream:
if '/' in line:
#.....
key = str(hostname)+":"+r.groups()[0][0:2]+r.groups()[2]
value = str(line[3])
d[key].append(value)

编辑:如果您想要完全按照问题中指定的键/值,则可以执行以下操作:

d2 = {}
for key,values in d.iteritems():
d2['%s:%d' % (key, len(values)] = ' '.join(str(v) for v in values)

我在这里使用 ' '.join() 将值连接到一个字符串中 - 从您的问题中并不清楚这是否是您想要的。

我不建议这样做,因为这会使访问单个值变得更加困难。

关于Python - 唯一化(!)字典键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2122880/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com