在不知道密钥的情况下查找字典值的类型

时间:2017-05-17 12:53:18

标签: python python-3.x dictionary

让我们假设我们有一个这样的词典:

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 对象,它不支持索引..

编辑:对于此示例,可以安全地假设所有字典键中的变量类型都相同。

1 个答案:

答案 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))]]