如果我有一个字典,如:
{ 'a': 1, 'b': 2, 'c': 3 }
Run Code Online (Sandbox Code Playgroud)
我怎样才能将它转换成这个?
[ ('a', 1), ('b', 2), ('c', 3) ]
Run Code Online (Sandbox Code Playgroud)
我怎么能把它转换成这个?
[ (1, 'a'), (2, 'b'), (3, 'c') ]
Run Code Online (Sandbox Code Playgroud) 我有一个数据结构,基本上相当于嵌套字典.让我们说它看起来像这样:
{'new jersey': {'mercer county': {'plumbers': 3,
'programmers': 81},
'middlesex county': {'programmers': 81,
'salesmen': 62}},
'new york': {'queens county': {'plumbers': 9,
'salesmen': 36}}}
Run Code Online (Sandbox Code Playgroud)
现在,保持和创造这个是非常痛苦的; 每当我有一个新的州/县/专业时,我必须通过令人讨厌的try/catch块创建下层词典.而且,如果我想要遍历所有值,我必须创建恼人的嵌套迭代器.
我也可以使用元组作为键,如下:
{('new jersey', 'mercer county', 'plumbers'): 3,
('new jersey', 'mercer county', 'programmers'): 81,
('new jersey', 'middlesex county', 'programmers'): 81,
('new jersey', 'middlesex county', 'salesmen'): 62,
('new york', 'queens county', 'plumbers'): 9,
('new york', 'queens county', 'salesmen'): 36}
Run Code Online (Sandbox Code Playgroud)
这使得迭代值非常简单和自然,但是做聚合和查看字典的子集(例如,如果我只想逐个状态)这样做更具语法上的痛苦.
基本上,有时我想将嵌套字典视为平面字典,有时我想将其视为复杂的层次结构.我可以把它全部包装在一个类中,但似乎有人可能已经完成了这个.或者,似乎可能有一些非常优雅的语法结构来做到这一点.
我怎么能做得更好?
附录:我知道setdefault()但它并没有真正实现干净的语法.此外,您创建的每个子词典仍需要setdefault()手动设置.
我从来没有把时间转换成UTC.最近有一个请求要让我的应用程序能够识别时区,而且我一直在圈子里跑.关于将本地时间转换为UTC的大量信息,我发现它相当基本(也许我也做错了),但我找不到任何有关将UTC时间轻松转换为最终用户时区的信息.
简而言之,Android应用程序向我发送(appengine app)数据,在该数据中是一个时间戳.要将时间戳存储到我正在使用的时间:
datetime.utcfromtimestamp(timestamp)
Run Code Online (Sandbox Code Playgroud)
这似乎有效.当我的应用程序存储数据时,它将提前5小时存储(我是EST -5)
数据存储在appengine的BigTable上,当检索到它时,它就像一个字符串一样:
"2011-01-21 02:37:21"
Run Code Online (Sandbox Code Playgroud)
如何在用户正确的时区将此字符串转换为DateTime?
此外,用户时区信息的推荐存储是什么?(你怎么通常存储TZ信息,即:"-5:00"或"EST"等等等等),我敢肯定的答案,我的第一个问题可能包含一个参数的回答第二个.
假设connectionDetails是一个Python字典,那么重构这样的代码的最好,最优雅,最"pythonic"的方法是什么?
if "host" in connectionDetails:
host = connectionDetails["host"]
else:
host = someDefaultValue
Run Code Online (Sandbox Code Playgroud) 这是我试图变成列表理解的代码:
table = ''
for index in xrange(256):
if index in ords_to_keep:
table += chr(index)
else:
table += replace_with
Run Code Online (Sandbox Code Playgroud)
有没有办法将else语句添加到此理解中?
table = ''.join(chr(index) for index in xrange(15) if index in ords_to_keep)
Run Code Online (Sandbox Code Playgroud) 我在蟒蛇玩耍.我在IDLE中使用了以下代码:
p = [1, 2]
p[1:1] = [p]
print p
Run Code Online (Sandbox Code Playgroud)
输出是:
[1, [...], 2]
Run Code Online (Sandbox Code Playgroud)
这是什么[…]?有趣的是,我现在可以将其用作无限列表列表,即
p[1][1][1]....
Run Code Online (Sandbox Code Playgroud)
只要我愿意,我就可以写上面的内容,但它仍然有用.
编辑:
假设我有一个Python对象x和一个字符串s,我怎么设置属性s上x?所以:
>>> x = SomeObject()
>>> attr = 'myAttr'
>>> # magic goes here
>>> x.myAttr
'magic'
Run Code Online (Sandbox Code Playgroud)
什么是魔术?顺便说一下,这个目的是缓存呼叫x.__getattr__().
可能重复:
如何将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)
这是我的尝试......但我无法弄清楚什么是错的?
python ×10
dictionary ×3
list ×3
attributes ×1
coding-style ×1
datetime ×1
ellipsis ×1
file ×1
localtime ×1
mapping ×1
object ×1
python-2.7 ×1
python-3.x ×1
subclass ×1
utc ×1