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

时间:2019-03-24 21:21:03

标签: python-3.7

如何将我在此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')]这样的字典,以及如何打印字典的键?

1 个答案:

答案 0 :(得分: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)