我有一个由员工经理组成的字典作为键值对:
{'a': 'b', 'b': 'd', 'c': 'd', 'd': 'f'}
我希望使用字典显示各级员工经理(员工的老板,老板的老板,老板老板的老板等)之间的关系。所需的输出是:
{'a': [b,d,f], 'b': [d,f], 'c': [d,f], 'd': [f] }
这是我的尝试,只显示第一级:
for key, value in data.items():
if (value in data.keys()):
data[key] = [value]
data[key].append(data[value])
我可以做另一个条件语句来添加下一个级别,但这是错误的方法。我对字典不太熟悉,那么什么是更好的方法?
答案 0 :(得分:11)
SELECT pr.propertyId, bu.logoName
FROM properties as pr
LEFT JOIN builders as bu ON pr.logo_id = bu.id
答案 1 :(得分:7)
您可以使用递归的概念:
def get_linked_list(element, hierarchy, lst):
if element:
lst.append(element)
return get_linked_list(hierarchy.get(element, ""), hierarchy, lst)
else:
return lst
然后访问层次结构:
>>> d = {'a': 'b', 'b': 'd', 'c': 'd', 'd': 'f'}
>>> print {elem:get_linked_list(elem, d, [])[1:] for elem in d.keys()}
>>> {'a': ['b', 'd', 'f'], 'c': ['d', 'f'], 'b': ['d', 'f'], 'd': ['f']}
但是必须小心,因为如果我们在字典中有一个项"a": "a"
答案 2 :(得分:1)
x={'a': 'b', 'b': 'd', 'c': 'd', 'd': 'f'}
d={}
l=x.keys()
for i in l:
d.setdefault(i,[])
d[i].append(x[i])
for j in l[l.index(i)+1:]:
if j==d[i][-1]:
d[i].append(x[j])
打印d
输出:{'a': ['b', 'd', 'f'], 'c': ['d', 'f'], 'b': ['d', 'f'], 'd': ['f']}