我的代码:
current_bex = dict(
objectName = 'myData',
objects = list(
dict(
one = 1,
foo = 'bar',
),
), )
try:
writePlist(current_bex, 'someFile.plist') except TypeError:
print 'caught typeerror'
结果:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>objectName</key>
<string>myData</string>
<key>objects</key>
<array>
<string>foo</string>
<string>one</string>
</array>
</dict>
</plist>
我的问题是,为什么在嵌套数组中,我有简单的字符串,而不是&lt; key&gt; foo&lt; / key&gt;&lt; string&gt; bar&lt; / string&gt;等?
编辑:
current_bex = dict(
objectName = 'myData',
objects = [
{
'one': 1,
'foo': 'bar',
},
{
'something': 'goes here',
},
],
)
工作正常。显然我对dict()和list()的使用是不正确的?有人能说清楚这个吗?
答案 0 :(得分:0)
这里有两件事:
list()
构造函数不会将单个内容项作为参数,而是需要一个可迭代的项。因此,您可以编写列表文字语法[1, 2, 3]
,但不能编写list(1, 2, 3)
。
dict是可迭代的,并将其键作为其值。
因此,如果您从dict构造一个列表,结果将是dict的键列表,而不是包含dict的列表。这正是你在最终的plist中所看到的。
>>> list(dict(one=1, foo='bar'))
['foo', 'one']