Python 正在使用所有字典都包含相同长度的列表验证字典
我有一本像这样的字典Python 正在使用所有字典都包含相同长度的列表验证字典,python,Python,我有一本像这样的字典 dic = {'x': [1, 2], 'z': [1, 3], 'r': [4, 5]} 我试图找出一种方法来检查字典中的所有值是否具有相同的列表长度 我尝试了以下方法 if (len(dic['x']) == len(dic['r']) == len(dic['z'])): 这是可行的,但我正在寻找一种不知道字典的键的方法,因为它们可能会有所不同。。有人能帮忙吗 试试这样的方法: vals = dic.values() l = len(vals[0]) if all
dic = {'x': [1, 2], 'z': [1, 3], 'r': [4, 5]}
我试图找出一种方法来检查字典中的所有值是否具有相同的列表长度
我尝试了以下方法
if (len(dic['x']) == len(dic['r']) == len(dic['z'])):
这是可行的,但我正在寻找一种不知道字典的键的方法,因为它们可能会有所不同。。有人能帮忙吗 试试这样的方法:
vals = dic.values()
l = len(vals[0])
if all(len(item) == l for item in vals):
# ok
或者,也许是这样:
lens = map(len, dic.values())
if len(set(lens)) == 1:
# ok
这将适用于Python2和pytho3:
>>> dic = {'x': [1, 2], 'z': [1, 3], 'r': [4, 5]}
>>> f = len(dic[next(iter(dic))])
>>> all(len(x) == f for x in dic.values())
True
如果项的数量很大,那么最好只迭代dict本身,因为dic.values()
将返回Python2中所有值的列表(您可以使用dict.itervalues
在Python2中获得迭代器):
注意:在Python3上失败。dict视图不支持索引。不需要
lambda
:lens=map(len,dic.values())
>>> all(len(dic[k]) == f for k in dic)
True