如何安全地提取dict值 [英] how to safely extract dict values

查看:68
本文介绍了如何安全地提取dict值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个带有特定键的词典 - 这个键的值将是

无,一个有效标量或列表:


{ 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆