如何安全地提取dict值 [英] how to safely extract dict values
问题描述
我有一个带有特定键的词典 - 这个键的值将是
无,一个有效标量或列表:
{ mykey,无}
{mykey," foo"}
{mykey,[" bar"," baz"]}
>
让'忽略无案例 - 在一个或多个值的情况下,我想要将值吸入列表中。这是一种方法:
如果mydict.has_key(mykey):
vals = []
_v = mydict [mykey]
if isinstance(_v,types.ListType):
vals.extend(_v)
else:
vals.append(_v)
#现在我们可以安全地遍历行为
for vals val:
。 ....
我的方式很难看。什么是更好的方式?
谢谢,
---- dz
David Zaret< da ** @ zaret.comwrites:
我的方式很难看。什么是更好的方式?
未经测试:
$ m $ b for key in mydict:
if isinstance(mydict [key] ,list):
vals.extend(mydict [key])
else:
vals.append(mydict [key])
Paul Rubin写道:
David Zaret< da ** @ zaret.comwrites:
< blockquote class =post_quotes>
>我的方式很难看。什么是更好的方式?
未经测试:
$ m $ b for key in mydict:
if isinstance(mydict [key] ,list):
vals.extend(mydict [key])
else:
vals.append(mydict [key])
太多无用的查找恕我直言......
vals = []
for k,v在mydict.items():
if isinstance(v,list):
vals.extend(v)
else:
vals.append(v)
! - )
但这与OP发现的不同丑陋...
-
bruno desthuilliers
python -c" print''@''。join( [''。''。加入([w [:: - 1] for p in p.split(''。'')])for
p in''o **** @ xiludom.gro''。split(''''')])"
2006年7月31日,David Zaret< da ** @ zaret。 comwrote:
i有一个特定的词典y - 此键的值将为
无,一个有效标量或列表:
{mykey,无}
{mykey," foo"}
{mykey,[" bar"," baz"]}
让我们忽略无案例 - 在一个或多个值的情况下,我想要将值吸入列表中。这是一种方法:
如果mydict.has_key(mykey):
vals = []
_v = mydict [mykey]
if isinstance(_v,types.ListType):
vals.extend(_v)
else:
vals.append(_v)
#现在我们可以安全地遍历行为
for vals val:
。 ....
怎么样 :
vals = []
$ m $ b for val in mydict.values():
try:vals.extend(val)
除外:vals.append(val)
欢呼,
amit。
-
----
Amit Khemka - onyomo.com
主页: www.cse.iitd.ernet.in/~csd00377
无尽的世界,无尽的太阳旋转,无尽的追求;
我再次转向,回到我自己的开始,在这里,找到休息。
i have a dict with a particular key - the values for this key will be
None, one valid scalar, or a list:
{mykey, None}
{mykey, "foo"}
{mykey, ["bar", "baz"]}
let''s ignore the None case - in the case of the one or many values, i
want to suck the values into a list. here''s one way to do this:
if mydict.has_key(mykey):
vals=[]
_v = mydict[mykey]
if isinstance(_v, types.ListType):
vals.extend(_v)
else:
vals.append(_v)
# now we can safely iterate through acts
for val in vals:
.....
my way is ugly. what''s a better way?
thanks,
---- dz
David Zaret <da**@zaret.comwrites:my way is ugly. what''s a better way?Untested:
for key in mydict:
if isinstance(mydict[key], list):
vals.extend(mydict[key])
else:
vals.append(mydict[key])
Paul Rubin wrote:David Zaret <da**@zaret.comwrites:>my way is ugly. what''s a better way?
Untested:
for key in mydict:
if isinstance(mydict[key], list):
vals.extend(mydict[key])
else:
vals.append(mydict[key])Too much useless lookup IMHO...
vals = []
for k, v in mydict.items():
if isinstance(v, list):
vals.extend(v)
else:
vals.append(v)
!-)
But this is not that different from what the OP found so ugly...
--
bruno desthuilliers
python -c "print ''@''.join([''.''.join([w[::-1] for w in p.split(''.'')]) for
p in ''o****@xiludom.gro''.split(''@'')])"
On 7/31/06, David Zaret <da**@zaret.comwrote:i have a dict with a particular key - the values for this key will be
None, one valid scalar, or a list:
{mykey, None}
{mykey, "foo"}
{mykey, ["bar", "baz"]}
let''s ignore the None case - in the case of the one or many values, i
want to suck the values into a list. here''s one way to do this:
if mydict.has_key(mykey):
vals=[]
_v = mydict[mykey]
if isinstance(_v, types.ListType):
vals.extend(_v)
else:
vals.append(_v)
# now we can safely iterate through acts
for val in vals:
.....how about:
vals = []
for val in mydict.values():
try: vals.extend(val)
except: vals.append(val)
cheers,
amit.
--
----
Amit Khemka -- onyomo.com
Home Page: www.cse.iitd.ernet.in/~csd00377
Endless the world''s turn, endless the sun''s Spinning, Endless the quest;
I turn again, back to my own beginning, And here, find rest.
这篇关于如何安全地提取dict值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!