I would like to create a dictionary which is indexed by lists. For instance, my dictionary should look like:

D = {[1,2,3]:1, [2,3]:3}

Anyone know how to do this? If I just type D([1,2,3]) = 1 it returns an error.

解决方案

dict keys must be hashable, which lists are not becase they are mutable. You can change a list after you make it. Think of how tricky it would be to try to keep a dict when the data used as keys changes; it doesn't make any sense. Imagine this scenario

>>> foo = [1, 2]

>>> bar = {foo: 3}

>>> foo.append(4)

and you will see why Python does not try to support lists as keys.

The most obvious solution is to use tuples instead of lists as keys.

>>> d = {[1, 2, 3]: 1, [2, 3]: 3}

Traceback (most recent call last):

File "", line 1, in

TypeError: unhashable type: 'list'

>>> d = {(1, 2, 3): 1, (2, 3): 3}

>>> d

{(2, 3): 3, (1, 2, 3): 1}

>>> d[2, 3]

3

python如何创建一个列表,在python中创建一个由列表索引的字典相关推荐

  1. ZeroMQ接口函数之 :zmq_msg_init_data - 从一个指定的存储空间中初始化一个ZMQ消息对象的数据...

    ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq_msg_init_data zmq_msg_init_data(3) ØMQ Manual - ØMQ/3.2.5 ...

  2. 写一个在一个字符串(n)中寻找一个子串(m)第一个位置的函数。

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  3. 使用C++控制台程序或Python调用Dll创建Qt界面(dll中创建QApplication,qtwinmigrate的使用)

    目录 理论 构建DLL 使用Python进行调用 使用C++控制台程序进行调用 理论 在Windows下,可能要用MFC或C#或Java,python调用一个插件,这个插件是一个dll,可以弄一个Qt ...

  4. 做工程为什么不用python_为什么“python setup.py sdist”在项目根目录中创建不需要的“PROJECT-egg.info”?...

    当我跑 python setup.py sdist 它在我的./dist目录中创建一个sdist.这包括一个"PROJECT-egg.info"文件在我的"dist&qu ...

  5. python猜数字游戏、在程序中预设一个_python 语法基础练习题

    python 语法基础练习题 1. 分别解释"=","==","+="的含义(口述) 2.两个变量值的关系?(口述) n1 = 123456 ...

  6. 从另一个分支在Git中创建一个分支

    我有两个分支: master和dev 我想从dev分支创建一个"功能分支". 目前在分支机构dev上,我执行以下操作: $ git checkout -b myfeature de ...

  7. java语言中修饰一个常量_接口中定义一个常量所用的修饰符有: (5.0分)_学小易找答案...

    [判断题]Java中的接口不允许被继承 (5.0分) [单选题]下列程序的输出结果是( ) public class Ex_36{ public static void main(String arg ...

  8. 创建模板_在 GNOME 中创建文档模板 | Linux 中国

    导读:制作模板可以让你更快地开始写作新的文档. 本文字数:1305,阅读时长大约:1分钟https://linux.cn/article-12699-1.html作者:Alan Formy-duval ...

  9. linux创建分区_在Linux中创建分区-分步指南

    linux创建分区 In this tutorial, we'll be covering the steps to create a partition in Linux. This can hel ...

  10. linux 图形化创建文件,Arronax - 在Ubuntu中创建桌面启动器的图形工具

    原标题:Arronax - 在Ubuntu中创建桌面启动器的图形工具 对于那些想在Ubuntu 16.04,Ubuntu 18.04,Ubuntu 19.04中手动创建桌面快捷方式启动器的人来说,Ar ...

最新文章

  1. 静态链表的插入和删除
  2. 经济学相关资料20170924.词袋.books
  3. 八一学院计算机无纸化考试成绩查询,会从考试成绩查询入口
  4. 单词接龙(信息学奥赛一本通-T1220)
  5. mint linux qq,linuxmint系统下安装QQ
  6. IDEA :Warning:java: 源值1.5已过时, 将在未来所有发行版中删除
  7. 日志系统新贵 Loki,确实比笨重的 ELK 轻
  8. tcp协议报文和三次握手与四次挥手
  9. python编程题字符串的美化_Python编程题15--RGB字符串排序
  10. 快手did did_gt edid的注册过程
  11. 哔哩哔哩H.265编码器在直播和点播的实践和应用
  12. 简洁的表白java_java简短表白代码是什么
  13. 【科研绘图】用PPT进行科研用图的图片预处理
  14. 联系人管理系统 python版
  15. 软件工程专业画图工具Jude的安装与Windows找不到javaw文件的解决办法
  16. 电商网站如何进行库存同步处理Redis+Lua
  17. redis设置连接密码
  18. PAT乙级1025题解
  19. js拖拽360桌面悬浮球代码
  20. Converged System 一体机趋势不可挡 - IBM PureSystem与SAP

热门文章

  1. ASP.NET MVC3 系列教程 - 如何使项目Debug进MVC3源代码
  2. [JavaScriptC#]收藏 备忘
  3. 1 Linux挂载光盘与U盘
  4. 使用内存硬盘(tmpfs)来加速你的网站
  5. ping来自192.168.1.1的回复:无法访问目标主机(丢包等网络问题)
  6. Get value from agent failed:cannot connect to [[192.168.121.128]:10050]:[111Connection refused]]
  7. dev代码拷贝中文乱码的解决方案
  8. Android Studio支持Java1.8的解决方案
  9. 解决 el-autocomplete 不显示及没数据时闪一下的问题
  10. 解决启动nginx时报80端口被占用的问题