dconf中的a(ss)类型是什么意思,gi.repository.Gio.Settings到get/set这样的字段正确的做法是什么?

What is the meaning of the a(ss) type in the dconf, and what are the correct methods of gi.repository.Gio.Settings to get/set such fields?

在 Gnome 上,我一直在研究 dconf。我正在尝试编写一些 Python 脚本来自己操作一些条目。其中一些具有 a(ss) 类型。所以我的第一个问题是:这个类型是什么意思?

我是这样处理 dconf 的:

from gi.repository import Gio
entries = Gio.Settings.new(path)
value1 = entries.get_string(key1) # for reading a string value
entries.set_string(key2, value2)  # for writing a string value

这工作正常,直到我尝试使用类型为 a(ss) 的键。由于类型错误,方法 get_string()set_string() 失败。所以我的第二个问题是:在这种情况下正确使用的方法是什么?

我在 Ubuntu 14.10 上使用 Python 3.4.2。

好吧,我的搜索没有显示任何内容,但通过尝试各种方法,我设法想出了一个解决方案:

from gi.overrides import GLib
value1 = entries.get_value(key1).unpack() # returns e.g. [("a", "b"), ("c", "d")]
entries.set_value(key2, GLib.Variant("a(ss)", value2)) # value2 is e.g. [("a", "b"), ("c", "d")]

由于这只是我自己想出的一段(有效的)代码,在没有完全理解发生了什么的情况下,我会等待一段时间,看看是否有人可以进一步阐明issue and/or 在接受我自己的回答之前提供一个更简洁的解决方案(或者至少让我确信我做对了)。