仅迭代python字典的两个键
使用以下设置在字典上迭代的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
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):
....