diff --git a/Lib/symtable.py b/Lib/symtable.py
index 3d1775b..ac9396c 100644
--- a/Lib/symtable.py
+++ b/Lib/symtable.py
@@ -129,8 +129,8 @@
     __globals = None
 
     def __idents_matching(self, test_func):
-        return tuple([ident for ident in self.get_identifiers()
-                      if test_func(self._table.symbols[ident])])
+        return frozenset(ident for ident in self.get_identifiers()
+                         if test_func(self._table.symbols[ident]))
 
     def get_parameters(self):
         if self.__params is None:
@@ -165,7 +165,7 @@
             d = {}
             for st in self._table.children:
                 d[st.name] = 1
-            self.__methods = tuple(d)
+            self.__methods = frozenset(d)
         return self.__methods
 
 
diff --git a/Lib/test/test_symtable.py b/Lib/test/test_symtable.py
index 7e0206d..712eca7 100644
--- a/Lib/test/test_symtable.py
+++ b/Lib/test/test_symtable.py
@@ -80,11 +80,11 @@
 
     def test_function_info(self):
         func = self.spam
-        self.assertEqual(func.get_parameters(), ("a", "b", "kw", "var"))
+        self.assertEqual(func.get_parameters(), {"a", "b", "kw", "var"})
         self.assertEqual(func.get_locals(),
-                         ("a", "b", "bar", "glob", "internal", "kw", "var", "x"))
-        self.assertEqual(func.get_globals(), ("bar", "glob"))
-        self.assertEqual(self.internal.get_frees(), ("x",))
+                         {"a", "b", "bar", "glob", "internal", "kw", "var", "x"})
+        self.assertEqual(func.get_globals(), {"bar", "glob"})
+        self.assertEqual(self.internal.get_frees(), {"x"})
 
     def test_globals(self):
         self.assertTrue(self.spam.lookup("glob").is_global())
@@ -142,7 +142,7 @@
         self.assertEqual(self.Mine.get_name(), "Mine")
 
     def test_class_info(self):
-        self.assertEqual(self.Mine.get_methods(), ('a_method',))
+        self.assertEqual(self.Mine.get_methods(), {'a_method'})
 
     def test_filename_correct(self):
         ### Bug tickler: SyntaxError file name correct whether error raised
