让我们假设我们有一个这样的词典:
my_dict = {'foo': [1, 2.325, 'asdasd', lambda x: x[0], ...], ...}
如何在不以最有效的方式知道任何密钥的情况下获取值的类型(列表中的各个项目,而不是列表本身)?
我提出了两种方法,但他们都觉得有点过分:
方法1:
var_types = [type(x) for x in list(my_dict.values())[0]]
我想,随着字典变大,将my_dict.values()
强制转换为列表可能会变慢......
方法2:
for k in my_dict:
var_types = [type(x) for x in my_dict[k]]
break
在单次迭代后手动终止的整个for
循环..
那么,有更好的方法吗?
问题是dict.values()
不返回迭代器,而是 dict_values 对象,它不支持索引..
编辑:对于此示例,可以安全地假设所有字典键中的变量类型都相同。
答案 0 :(得分:1)
您可以使用next(iter(my_dict))
选择arbitrary key,然后通过map()
或理解来推导类型:
list(map(type,my_dict[next(iter(my_dict))]))
[type(item) for item in my_dict[next(iter(my_dict))]]