gpt4 book ai didi

python - 从 python 中的列表字典创建一个字典

转载 作者:太空宇宙 更新时间:2023-11-04 02:59:55 25 4
gpt4 key购买 nike

我有一个 python 对象,它是一个字典,其中的键是主机名,值是用户列表以及他们在字典表示法中的磁盘使用情况。我在下面粘贴了我的命令,因为解释似乎令人困惑。每个主机都是一个 key ,在每个主机下可能有几个用户,这些用户在主机中是常见的,也可能是唯一的。我正在努力检查以下条件。

  1. 检查每个主机中是否存在该用户。
  2. 如果是,请添加他在每个主机中使用的总磁盘。
  3. 如果不是,则将唯​​一用户附加到字典中。
  4. 现在在大字典中按照磁盘使用的顺序对用户进行排序。

目前取得的成绩:1.登录各个主机2.获取用户及其磁盘使用情况3. 结果存储在字典中,主机名作为键,值是用户列表及其磁盘使用情况。

如果我能把它变成一个 dict of dict,我希望我的问题得到解决。

{
'localhost': [
'alice: 1491916K',
'bob: 423576K'
],
'10.252.136.241': [
'alice: 3491916K',
'bob: 4235K',
'chaplin: 3456K'
]
}

这是 2 台主机的示例输出。现在我有了结果对象,它是上述形式的字典。我想遍历每个主机,看看每个主机中是否存在用户“alice”,并添加他的磁盘空间,并在“alice”的字典中有一个条目,“bob”也有一个条目,然后离开“chaplin” ' 就像在新字典中一样。我不想特定于主机。我想要最后的总用法。

我只是停留在迭代上。一旦我可以迭代,我就可以设法总结并创建 'user': 'total_space' 的大字典。

[更新]我的预期输出是

expected_output = { 'alice': '498382K', 'bob': '427811K', 'chaplin': '3456K' }

这里。每个主机中都添加了 alice 的用法。 bob 和 chaplin 也一样,因为他不在所有主机中。

最佳答案

given_dict = {
'localhost': ['alice: 1491916K', 'bob: 423576K'],
'10.252.136.241': ['alice: 3491916K', 'bob: 4235K', 'chaplin: 3456K']
}
resultant_dict = {}

for values in given_dict.values():
for value in values:
name, usage = value.split(':')
usage = int(usage.strip().rstrip('K'))
if name in resultant_dict:
resultant_dict[name] += usage
else:
resultant_dict[name] = usage

sorted_result = sorted(resultant_dict.items(), key=lambda x: x[1])
for name, usage in sorted_result:
print("{}: {}".format(name, usage))

会给你这个输出

chaplin: 3456
bob: 427811
alice: 4983832

如果您希望按照磁盘使用的降序对结果进行排序,请为 sorted 函数设置 reverse=True

关于python - 从 python 中的列表字典创建一个字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41240678/

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