如何找到具有更多填充值的字典?
How to find the dict which has more number of filled values?
我有两个Dict
a = {'A':'',
'B':'234923',
'C': 'adkasd',
'D':'kajskdad'}
b = {'A':'',
'B':'dfdsf',
'C': 'adkasd',
'D':''}
如何 return Dict
在这 2 Dict
中有更多的字段值(非 ''
值)?
我厌倦了这个功能:
def getLargerData(dict1, dict2):
countA = len([i for i in dict1.values() if i != ''])
countB = len([i for i in dict2.values() if i != ''])
if countA > countB:
return dict1
else:
return dict2
输出:
{'A':'',
'B':'234923',
'C': 'adkasd',
'D':'kajskdad'}
有什么方法可以为此优化更多或替代解决方案吗?
试试这个,它有点“优化”
def getLargerData(dict1, dict2):
'''returns True if dict1 is larger than dict2 otherwise returns false'''
return len([i for i in dict1.values() if i != '']) > len([i for i in dict2.values() if i != ''])
这是它的工作原理:
def getLargerData(dict1,dict2):
定义函数
return
returns 如果:
len(
的长度
[i for i in dict1.values() if i != '']
returns dict1 中的所有值,如果不是 none
>
returns 如果大于
len(
的长度
[i for i in dict2.values() if i != '']
returns dict2 中的所有值,如果不是 none
您可以简单地检查每个字典中所有值的计数。
感谢@deceze 的评论,以获取 dict 的每个值的 oneliner 总和。
def getLargerData(dict1, dict2):
countA = sum(1 for i in dict1.values() if i)
countB = sum(1 for j in dict2.values() if j)
return dict1 if countA > countB else dict2
getLargerData(a,b)
输出:
{'A': '', 'B': '234923', 'C': 'adkasd', 'D': 'kajskdad'}
我有两个Dict
a = {'A':'',
'B':'234923',
'C': 'adkasd',
'D':'kajskdad'}
b = {'A':'',
'B':'dfdsf',
'C': 'adkasd',
'D':''}
如何 return Dict
在这 2 Dict
中有更多的字段值(非 ''
值)?
我厌倦了这个功能:
def getLargerData(dict1, dict2):
countA = len([i for i in dict1.values() if i != ''])
countB = len([i for i in dict2.values() if i != ''])
if countA > countB:
return dict1
else:
return dict2
输出:
{'A':'',
'B':'234923',
'C': 'adkasd',
'D':'kajskdad'}
有什么方法可以为此优化更多或替代解决方案吗?
试试这个,它有点“优化”
def getLargerData(dict1, dict2):
'''returns True if dict1 is larger than dict2 otherwise returns false'''
return len([i for i in dict1.values() if i != '']) > len([i for i in dict2.values() if i != ''])
这是它的工作原理:
def getLargerData(dict1,dict2):
定义函数
return
returns 如果:
len(
的长度[i for i in dict1.values() if i != '']
returns dict1 中的所有值,如果不是 none
>
returns 如果大于len(
的长度[i for i in dict2.values() if i != '']
returns dict2 中的所有值,如果不是 none
您可以简单地检查每个字典中所有值的计数。 感谢@deceze 的评论,以获取 dict 的每个值的 oneliner 总和。
def getLargerData(dict1, dict2):
countA = sum(1 for i in dict1.values() if i)
countB = sum(1 for j in dict2.values() if j)
return dict1 if countA > countB else dict2
getLargerData(a,b)
输出:
{'A': '', 'B': '234923', 'C': 'adkasd', 'D': 'kajskdad'}