Python 为什么我的列表只能部分转换成字典?
让我们称我的名单为圣殿骑士。它有以下1000行的结构,显然没有括号:Python 为什么我的列表只能部分转换成字典?,python,list,dictionary,Python,List,Dictionary,让我们称我的名单为圣殿骑士。它有以下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) 找一本字典,它的大小只是圣堂武士大小的一小部
['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中那样降序。我还尝试了建议的解决方案。
我错过了什么
编辑:以下是部分输出:
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
你的钥匙肯定不是独一无二的。要确认这一点,请执行以下操作:
keys = [x[0] for x in tempList]
print(len(keys), len(set(keys))
它们应该不同,后者更小。现在,通过阅读你的问题,你似乎想要两件事:
OrderedDict
您的
键在数据集中不是唯一的-您想成为每个键的列表还是…?请给出一个部分输出的示例-不清楚您得到了什么或预期会发生什么。您的代码似乎很好,因为我无法在我的机器上复制此错误。@artre OK。。。你的圣殿骑士是不是像:[[a',u'something'],[b',u'something']]
-所以它肯定是由两个物品组成的,第一个物品绝对是独一无二的?@JonClements是的。并且每行的第一个值是唯一的。我很确定我做了上面的测试。len(键)给我1000,len(set(键))给我125。@artre现在应该很清楚,你的键不是唯一的。。。在1000个密钥中,您只有125个唯一密钥。好的。我明白。虽然在输出上我看不到任何重复项,但它们似乎都是唯一的密钥ID。真奇怪。我必须回到上一步,看看我在创建列表时做错了什么。@artre或者你可以使用OrderedICT,就像我的回答一样?;-)我想我可以:-)。我只是想在我“看似正确”的代码中找到错误。
from collections import OrderedDict
subDict = OrderedDict()
for x in tempList:
subDict.setdefault(x[0], []).append(x[1])