让我调用我的列表列表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
答案 0 :(得分:1)
你的钥匙绝对不是唯一的。要确认这一点,请执行以下操作:
keys = [x[0] for x in tempList]
print(len(keys), len(set(keys))
它们应该是不同的,后者更小。现在,通过阅读你的问题,你似乎想要两件事:
这两个要求的答案是使用OrderedDict
个列表。
from collections import OrderedDict
subDict = OrderedDict()
for x in tempList:
subDict.setdefault(x[0], []).append(x[1])