Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么我的列表只能部分转换成字典?_Python_List_Dictionary - Fatal编程技术网

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

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) 找一本字典,它的大小只是圣堂武士大小的一小部

让我们称我的名单为圣殿骑士。它有以下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中那样降序。我还尝试了建议的解决方案。 我错过了什么

编辑:以下是部分输出:

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])