我有一个python(nested
)字典,我想从中创建一个表(然后是csv file
)。问题是如果值是int,它不会附加到列表'table'。它甚至没有通过elif/if
语句的其余部分。
我正在尝试创建一个列表(表),如果是字典,它将包含所有值和键。
table = []
def indict(d):
for (k, v) in d.items():
def indict(d):
for (k, v) in d.items():
if isinstance(v, dict):
table.append([str(k) + ":"])
indict(v)
print "another dictionary "
elif type(v) == list:
table.append([str(k),"list"])
print "appended as list"
elif type(v) != unicode and type(v) != list:
print v
v = str(v)
print v + " converted"
#print d[i]
else:
table.append([str(k), v])
print "simply value"
这是字典的一个例子:
{u'city': {u'uname': u'london', u'id': 1, u'name': u'London'}, u'notice': u'', u'neighborhood': {u'uname': u'papaya-tree', u'id': 5, u'name': u'Papaya Tree'},....
它不会附加'id'也不会附加1。
答案 0 :(得分:0)
最自然的方法是使用递归...这里是一个例子:
d = { u'city': {u'uname': u'london', u'id': 1, u'name': u'London'} }
output = list()
def testdict(d,output):
for k,v in d.iteritems():
if type(v) == dict:
testdict(v,output)
else:
output.append((str(k),v))
testdict(d,output)
print output # prints:[('uname', u'london'), ('id', 1), ('name', u'London')]