字典在Python 3.6中排序(至少在CPython实现下),与之前的版本不同.这似乎是一个重大变化,但它只是文档中的一小段.它被描述为CPython实现细节而不是语言特性,但也暗示这可能成为未来的标准.
在保留元素顺序的同时,新字典实现如何比旧字典实现更好?
以下是文档中的文字:
dict()现在使用PyPy开创的"紧凑"表示.与Python 3.5相比,新dict()的内存使用量减少了20%到25%.PEP 468(在函数中保留**kwargs的顺序.)由此实现.这个新实现的顺序保留方面被认为是一个实现细节,不应该依赖(这可能会在未来发生变化,但是在更改语言规范之前,希望在几种版本的语言中使用这个新的dict实现为所有当前和未来的Python实现强制命令保留语义;这也有助于保持与随机迭代顺序仍然有效的语言的旧版本的向后兼容性,例如Python 3.5).(由INADA Naoki在issue 27350中提供.最初由Raymond Hettinger提出的想法.)
2017年12月更新:Python 3.7 保证了dict保留插入顺序
可能重复:
如何将Python字典转换为元组列表?
我正在尝试将Python字典转换为Python列表,以便执行一些计算.
#My dictionary
dict = {}
dict['Capital']="London"
dict['Food']="Fish&Chips"
dict['2012']="Olympics"
#lists
temp = []
dictList = []
#My attempt:
for key, value in dict.iteritems():
aKey = key
aValue = value
temp.append(aKey)
temp.append(aValue)
dictList.append(temp)
aKey = ""
aValue = ""
Run Code Online (Sandbox Code Playgroud)
这是我的尝试......但我无法弄清楚什么是错的?
我有清单列表:
[['13/03/2012', ['a']], ['13/03/2012', ['b', 'c', 'd']], ['13/03/2012', ['e', 'f']], ['26/03/2012', ['f']], ['02/04/2012', ['a']], ['09/04/2012', ['b']]]
Run Code Online (Sandbox Code Playgroud)
我需要列表包含相同的日期在每个第一个值将加入第二个值输出像这样
[['13/03/2012', ['a', 'b', 'c', 'd', 'e', 'f']], ['26/03/2012', ['f']], ['02/04/2012', ['a']], ['09/04/2012', ['b']]]
Run Code Online (Sandbox Code Playgroud)
请有人可以帮帮我吗?
我有一个未定义大小的字典(与用户想要的一样大)但我希望能够在需要时删除字典中的项目,我的问题是如何移除所有字典键一旦删除,即
transDict={0:"Charlie", 1:"Alan", 2:"Jake", 3:"Rose"}
delkey = raw_input('What key to delete')
transDict[delkey] = transDict.pop[int(delkey + 1)]
# this is the bit isn't working code just an
# example of the functionality I need
for _id in transDict.keys(int(delkey) + 1:):
transDict[_id] = transDict[(int(_id) + 1)]
Run Code Online (Sandbox Code Playgroud)
但后来我需要将所有其他元素从3开始向下移动一步,我的问题是字典可以是5或50个元素大.
谢谢
在Python中,有dict.inspect()方法返回元组列表(链接).在ruby中是否有类似的方法来实现,一个数组的数组?
#input
{:a => 1, :b => 2}
#result
[[:a, 1], [:b, 2]]
Run Code Online (Sandbox Code Playgroud) 鉴于这样的字典:
dic = {(7, 3): 18.51, (1, 3): 18.751, (5, 6): 34.917, (9, 8): 18.9738}
Run Code Online (Sandbox Code Playgroud)
我想将它转换为这样的元组列表:
my_list = [(7, 3, 18.51), (1, 3, 18.751), (5, 6, 34.917), (9, 8, 18.9738)]
Run Code Online (Sandbox Code Playgroud)
我本可以使用一个循环,但我想知道是否有一个简洁的方法来代替循环.