如何拆分列表中的元素并将其转换为字典并打印密钥?

问题描述 投票:0回答:1

如何将此format( [(9.0, 'artificial intelligent branch'), (4.0, 'soft computing'), (4.0, 'six branches')]中的列表转换为类似[(9.0: 'artificial intelligent branch'), (4.0: 'soft computing'), (4.0: 'six branches')]的字典以及如何打印字典的键?

python-3.7
1个回答
0
投票

创建字典

这是创建字典的代码

lst = [(9.0, 'artificial intelligent branch'), (4.0, 'soft computing'), (4.0, 'six branches')]
dic = {key: value for key, value in lst}

然而,这不是最佳的。如果我们现在打印lst,我们得到

{9.0: 'artificial intelligent branch', 4.0: 'six branches'}

这是因为我们有两个4.0值,它们互相覆盖。解决方案可能是简单地交换键和值:

lst = [(9.0, 'artificial intelligent branch'), (4.0, 'soft computing'), (4.0, 'six branches')]
dic = {key: value for value, key in lst}

然后我们得到

{'artificial intelligent branch': 9.0,
 'soft computing': 4.0,
 'six branches': 4.0}

哪个可能会更好,具体取决于您的需求。

另一个解决方案可能是

dic = {}
for key, value in lst:
    if key in dic:
        dic[key].append(value)
    else:
        dic[key] = [value]

这将为每个键创建一个列表,并给出结果

{9.0: ['artificial intelligent branch'],
 4.0: ['soft computing', 'six branches']}

这可以简化一下:

for key, value in a:
    b[key] = b.get(key, []) + [value]

我们总是将键分配给一个新值,但是我们将新值设置为已经存在的新值列表。我们使用字典的.get方法来提供默认值,以防b[key]不存在。

迭代字典

通过字典迭代可以这样做

for key, value in dic.items().
    print(key, value)

# Or
for key in dic.keys():
    print(key)

# Or
for value in dic.values():
    print(value)
© www.soinside.com 2019 - 2024. All rights reserved.