我有一本像这样的字典
dic = {'x': [1, 2], 'z': [1, 3], 'r': [4, 5]}
字符串我试图找出一种方法来检查字典中的所有值都具有相同的列表长度。我尝试了以下方法
if (len(dic['x']) == len(dic['r']) == len(dic['z'])):
型这是可行的,但我正在寻找一种方法来做到这一点,而不知道字典的关键,因为他们可能会有所不同。
q3aa05251#
试试这样的东西:
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
型
p3rjfoxz2#
这在Python 2和Python 3上都适用:
>>> 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中的迭代器)。
dic.values()
dict.itervalues
>>> all(len(dic[k]) == f for k in dic) True
u0sqgete3#
下面的代码处理并非所有字典元素都是列表的情况。
def _all_lists_in_dict_have_the_same_length(data: dict) -> bool: items_length_set = set() for val in data.values(): if not isinstance(val, list): continue items_length_set.add(len(val)) if len(items_length_set) != 1: return False return True
字符串
3条答案
按热度按时间q3aa05251#
试试这样的东西:
字符串
或者,也许是这样的:
型
p3rjfoxz2#
这在Python 2和Python 3上都适用:
字符串
如果项目数量很大,那么最好只遍历dict本身,因为
dic.values()
将返回Python2中所有值的列表(您可以使用dict.itervalues
来获取Python2中的迭代器)。型
u0sqgete3#
下面的代码处理并非所有字典元素都是列表的情况。
字符串