首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python:如何在不颠倒原始词典的情况下颠倒新词典中的列表

Python:如何在不颠倒原始词典的情况下颠倒新词典中的列表
EN

Stack Overflow用户
提问于 2014-10-27 14:23:43
回答 5查看 102关注 0票数 3

我有一本列表字典,上面写着:

代码语言:javascript
运行
复制
dic = {"foo" : [1,3,5,6] , "bar" : [5, 3, 8, 4]}

我正在尝试创建一个与这些列表相反的新字典,同时又不破坏原来的字典

我甚至尝试过像这样的东西

代码语言:javascript
运行
复制
list1 =  dic["foo"]
list2 = list1.reverse()
newDic = {}
newDic["foo"] = list2

但看起来dic["A"]list1list2都指向相同的内存位置。换句话说,在这个过程中,dic["foo"]也被颠倒了,这不是我想要的!有什么简单的方法可以解决这个问题吗?

EN

回答 5

Stack Overflow用户

发布于 2014-10-27 14:27:14

如果你想看整本字典,试试下面这一行:

newDic = {key:value[::-1] for key,value in dic.iteritems()}

如果你只想做一个列表,试试这个:

代码语言:javascript
运行
复制
list1 =  dic["foo"]
newDic = {}
newDic["foo"] = list1[::-1]

list.reverse()将更改列表本身。尝试list[::-1],它将返回一个反转列表的新副本

票数 2
EN

Stack Overflow用户

发布于 2014-10-27 14:27:18

list1.reverse()是一种就地逆转。请改用函数reversed(list1),该函数不会修改调用该函数的列表。

具体地说:

代码语言:javascript
运行
复制
dic = {"foo" : [1,3,5,6] , "bar" : [5, 3, 8, 4]}
list1 = dic["foo"]
list2 = list(reversed(list1))
newDic = {}
newDic["foo"] = list2

注意,reversed(list1)返回一个generator,而您想要完整的列表,这就是上面调用list的原因。

票数 1
EN

Stack Overflow用户

发布于 2014-10-27 14:31:41

问题出在list2 = list1.reverse()

list.reverse()方法将颠倒相同的列表。

喜欢

代码语言:javascript
运行
复制
>>> a = [66.25, 333, 333, 1, 1234.5]
>>> a.reverse()
>>> a
[1234.5, 1, 333, 333, 66.25]

reverse的返回类型为None

代码语言:javascript
运行
复制
>>> a = [66.25, 333, 333, 1, 1234.5]
>>> b = a.reverse()
>>> b
>>> print b
None

所以在你的例子中,list2 = None

另一个问题是

您正在访问f00,密钥为foo

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26582136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档