为什么我的列表列表只部分转换为字典?

时间:2017-10-21 14:24:09

标签: python list dictionary

让我调用我的列表列表tempList。它具有以下结构,包含1000行,显然没有括号:

['foo', u'18,206,600']
['a', u'18,052,573']
['ta', u'17,870,276']
['sc', u'17,792,892']
['wo', u'17,736,288']
['pis', u'17,721,111']

现在我执行以下代码,并希望左边的元素是右边的元素,右边的元素是每行的值:

subsDict = dict(tempList)

并获取一个字典,其大小只是tempList大小的一小部分。少数字典元素的顺序完全改组,而不是像tempList那样下降。我也尝试了建议的解决方案here。 我错过了什么?

编辑:这是输出的一部分:

Fitness   :   6,209,230
fffffffuuuuuuuuuuuu   :   782,908
rickandmorty   :   669,563
dataisbeautiful   :   12,447,856
relationships   :   830,326
GlobalOffensive   :   552,751
Showerthoughts   :   13,017,249
blog   :   16,064,085
woahdude   :   1,424,895

1 个答案:

答案 0 :(得分:1)

你的钥匙绝对不是唯一的。要确认这一点,请执行以下操作:

keys = [x[0] for x in tempList]
print(len(keys), len(set(keys))

它们应该是不同的,后者更小。现在,通过阅读你的问题,你似乎想要两件事:

  1. 顺序
  2. 保留所有价值
  3. 这两个要求的答案是使用OrderedDict个列表。

    from collections import OrderedDict
    
    subDict = OrderedDict()
    for x in tempList:
        subDict.setdefault(x[0], []).append(x[1])