Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅迭代python字典的两个键_Python_Dictionary - Fatal编程技术网

仅迭代python字典的两个键

仅迭代python字典的两个键,python,dictionary,Python,Dictionary,使用以下设置在字典上迭代的Python方式是什么: dict = {'a': [1, 2, 3], 'b': [3, 4, 5], 'c': 6} 如果我只想在a和b中的所有值上迭代for循环,并跳过c。显然有无数种方法可以解决这个问题,但我更愿意避免以下情况: for each in dict['a']: # do something pass for each in dict['b']: # do something pass 破坏性的东西,比如: de

使用以下设置在字典上迭代的Python方式是什么:

dict = {'a': [1, 2, 3], 'b': [3, 4, 5], 'c': 6}
如果我只想在
a
b
中的所有值上迭代for循环,并跳过
c
。显然有无数种方法可以解决这个问题,但我更愿意避免以下情况:

for each in dict['a']:
    # do something
    pass
for each in dict['b']:
    # do something
    pass
破坏性的东西,比如:

 del dict['c']
 for k,v in dict.iteritems():
     pass
您可以使用
itertools
模块执行以下操作:

In [29]: from itertools import chain

In [30]: mydict = {'a': [1, 2, 3], 'b': [3, 4, 5], 'c': 6}

In [31]: for item in chain(mydict['a'], mydict['b']):
    ...:     print(item)
    ...:         
1
2
3
3
4
5
要仅迭代字典中属于
list
实例的键值,只需使用

您可以使用
itertools
模块执行以下操作:

In [29]: from itertools import chain

In [30]: mydict = {'a': [1, 2, 3], 'b': [3, 4, 5], 'c': 6}

In [31]: for item in chain(mydict['a'], mydict['b']):
    ...:     print(item)
    ...:         
1
2
3
3
4
5
要仅迭代字典中属于
list
实例的键值,只需使用


更通用的方法是使用类似过滤器的方法,将
if
放在生成器表达式的末尾

如果要迭代每个iterable值,请使用
hasattr
进行筛选:

for key in (k for k in dict if hasattr(dict[k], '__iter__')):
    for item in dict[key]:
        print(item)
如果要排除某些键,请使用“不在”筛选器:

如果只想选择特定的键,请使用“输入”过滤器:


更通用的方法是使用类似过滤器的方法,将
if
放在生成器表达式的末尾

如果要迭代每个iterable值,请使用
hasattr
进行筛选:

for key in (k for k in dict if hasattr(dict[k], '__iter__')):
    for item in dict[key]:
        print(item)
如果要排除某些键,请使用“不在”筛选器:

如果只想选择特定的键,请使用“输入”过滤器:


与SSDMS的解决方案类似,您也可以执行以下操作:

mydict={'a':[1,2,3],'b':[3,4,5],'c':6}
对于mydict['a']+mydict['b']中的每一项:

..

与SSDMS的解决方案类似,您也可以执行以下操作:

mydict={'a':[1,2,3],'b':[3,4,5],'c':6}
对于mydict['a']+mydict['b']中的每一项:

..

检查该值是否可计算?我希望有人能想出一个聪明的方法来解决这类问题。它怎么可能更聪明呢?
keys_for_iterables=[k for k in dict if hasattr(d[k],“u iter_uuu')]
。或者把它放在一个try块中,表现得好像每个值都是可测试的。如果你总是知道你感兴趣的两个键,为什么不在dict['key1']+dict['key2']中对每个键进行
检查该值是否可测试?我希望有人对这类问题有一个聪明的窍门,它怎么可能更聪明呢?
keys\u for\u iterables=[k代表dict中的k,如果hasattr(d[k],“\uuu iter\uuuu')]
。或者把它放在一个try块中,就好像每个值都是可写的一样。如果你总是知道你感兴趣的两个键,为什么不
代表dict['key1']+dict['key2']
valid = set(['a', 'b'])
for key in (k for k in dict if key in valid):
    ....