如何将python中的集合转换为字典

时间:2015-08-05 23:08:23

标签: python

我是python的新手并尝试将Set转换为Dictionary。我正在努力寻找一种方法来实现这一目标。任何输入都受到高度赞赏。感谢。

Input : {'1438789225', '1438789230'}

Output : {'1438789225':1, '1438789230':2}

4 个答案:

答案 0 :(得分:3)

使用enumerate()生成一个从0开始的值,并为字典中的每个项目向上计数,然后分析它:

input_set = {'1438789225', '1438789230'}
output_dict = {item:val for val,item in enumerate(input_set)}

或传统的循环:

output_dict = {}
for val,item in enumerate(input_set):
    output_dict[item] = val

如果您希望它从1而不是0开始,则对第一个代码段使用item:val+1,为第二个代码段使用output_dict[item] = val+1

那就是说,这本词典与list

几乎相同
output = list(input_set)

答案 1 :(得分:2)

我的单行:

output = dict(zip(input_set, range(1, len(s) + 1)))

zip逐个元素(l1[0] + l2[0] + l1[1] + l2[1] + ...)混合两个列表(或集合)。

我们正在为它提供两件事:

  • input_set
  • 从1到集合长度的列表+ 1(因为您指定要从1开始计数,而不是从0开始计算)

输出是一个像[('1438789225', 1), ('1438789230', 2)]这样的元组列表,只需将它转换为dict构造函数即可转换为dict ... dict

但是像TigerhawkT3说的那样,我很难找到这样一本字典的用法。但如果你有自己的动机,那么你还有另一种方法。如果你从这篇文章中删除了任何内容,那就是存在zip

答案 2 :(得分:0)

我的Python非常生疏,但应该这样做:

def indexedDict(oldSet):
    dic = {}
    for elem,n in zip(oldSet, range(len(oldSet)):
        dic[elem] = n

    return dic

如果我写了任何非法的东西,请告诉我,我会解决它。我没有方便的口译员。

基本上,我只是使用范围对象(基本上是一个连续的数字列表,但效率更高)来压缩列表,然后使用生成的元组。 我得到了老虎的答案,这基本上是他的一个更天真的版本。

答案 3 :(得分:0)

一种简单的方法是迭代集合,并使用计数器作为字典键,逐个元素地填充结果字典:

import