如何在Python中过滤掉字典中的非字符串键?

时间:2015-06-13 00:29:23

标签: python dictionary

我是Python的新手,并试图弄清楚如何过滤掉字典中的所有非字符串键。感谢您提供的任何帮助。

5 个答案:

答案 0 :(得分:4)

 { key: dict[key] for key in dict.keys() if isinstance(key, int) }

答案 1 :(得分:1)

is_str = 'foo'
not_str = 34
dd = {is_str:12, not_str:13, 'baz':14, 1:15}
for k in dd: print k, isinstance(k, str)

请注意,这不仅仅是文字字符串键,而是可能引用或不引用字符串的变量。无论您想要什么样的过滤器(保留,删除,操作)都可以进入for循环。

另外,你知道鸭子打字吗?您可能不需要实际删除字符串键项;有时Python会使用非字符串做一些明智的字符串。

答案 2 :(得分:0)

您可以使用dict.keys()获取密钥列表,使用type()检查密钥的类型,然后使用if语句根据类型(“”)检查类型,以及可能删除密钥及其对。以下代码包含剧透。

for key in dict.keys():            #Loop through
    if type(key) != type(""):      #Check the type
        del dict[key]              #Potentially delete key and value

答案 3 :(得分:0)

为了各种答案,这是另一种方法:

>>> d = {1: 'ONE', 2: 'TWO', 3: 'THREE', 'T': 'THREE'}
>>> b = {k:d[k] for k in filter(lambda s: type(s) is int, d.iterkeys())}
>>> b
{1: 'ONE', 2: 'TWO', 3: 'THREE'}

答案 4 :(得分:0)

new = {k, v for k, v in old.items() if isinstance(k, str)} # repair items if key is string