我有一个数组字典。
mydict={'a':[45,65,78,32], 'b':['red','blue','green','yellow'], 'c':[3.4, 4.5, 6.5, 7.6]}
我想拉取mydict['b']
when的元素mydict['a']
大于35
. 我想
myarr = ['red','blue','green']
我试过了 -
myarr = [mydict['b'] for num in mydict['a'] num > 35]
我不想走枚举和保存索引以及使用索引的 C++/C 路线。听起来不像 Python。
我该怎么做呢?
创建一个新的list
,如果val的dict['a'] > 35
:
mydict = {'a':[45,65,78,32], 'b':['red','blue','green','yellow'], 'c':[3.4, 4.5, 6.5, 7.6]}
Python 3.x:
使用itertools.zip_longest(*iterables, fillvalue=None)
:
从文档:
制作一个迭代器,聚合来自每个可迭代对象的元素。如果可迭代对象的长度不均匀,则使用填充值填充缺失值。迭代继续直到最长的迭代用完
print([y for x,y in zip_longest(mydict['a'],mydict['b']) if x > 35])
Python 2.x:
使用 itertools.izip_longest(*iterables[, fillvalue])
print([y for x,y in izip_longest(mydict['a'],mydict['b']) if x > 35])
输出:
['red', 'blue', 'green']
编辑:
zip()
和 和有zip_longest()
什么区别?
考虑以下列表:
x = [1,2,3,4,5]
y = ['a','b','c']
for a,b in zip(x,y):
print(a,b)
输出:
1 a
2 b
3 c
它显然跳过了 中的元素4,5
,x
因为它在y
.
使用zip_longest()
:
x = [1,2,3,4,5]
y = ['a','b','c']
for a,b in zip_longest(x,y):
print(a,b)
输出:
1 a
2 b
3 c
4 None
5 None
它没有跳过 中的元素x
,而是用 a 填充 y 中缺少的元素None
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句