给出:
[{'chin': [(297, 322), (297, 339), (299, 356), (301, 373), (305, 390), (312, 405), (325, 415), (342, 418),
(362, 420), (383, 421), (402, 421), (418, 415), (427, 403), (433, 387), (437, 370), (440, 352),
(443, 335)],
'left_eyebrow': [(306, 296), (313, 282), (326, 276), (342, 276), (357, 281)],
'right_eyebrow': [(378, 283), (393, 278), (410, 281), (423, 289), (431, 303)],
'nose_bridge': [(366, 297), (365, 305), (364, 314), (363, 323)],
'nose_tip': [(347, 337), (355, 340), (364, 341), (373, 340), (382, 339)],
'left_eye': [(321, 304), (328, 296), (339, 296), (349, 304), (339, 305), (328, 305)],
'right_eye': [(386, 307), (397, 299), (407, 300), (415, 309), (407, 309), (396, 308)],
'top_lip': [(332, 363), (343, 355), (355, 351), (363, 353), (372, 352), (385, 357), (399, 366), (394, 365),
(372, 359), (363, 359), (355, 359), (337, 362)],
'bottom_lip': [(399, 366), (385, 368), (372, 369), (363, 369), (354, 368), (343, 366), (332, 363), (337, 362),
(354, 360), (363, 361), (372, 361), (394, 365)]}]
我想获取所有坐标值,去掉下巴等。 就像(297,322)之类的坐标
答案 0 :(得分:1)
您可以遍历lst元素,然后按如下所示查找其中包含的字典的值:
coords = []
for d in lst:
coord.append(d.values())
print(coords)
答案 1 :(得分:0)
如果代码格式正确,这将变得容易得多:
lst = [
{
'chin': [
(297, 322), (297, 339), (299, 356), (301, 373), (305, 390), (312, 405), (325, 415), (342, 418), (362, 420), (383, 421), (402, 421), (418, 415), (427, 403), (433, 387), (437, 370), (440, 352), (443, 335)
],
'left_eyebrow': [
(306, 296), (313, 282), (326, 276), (342, 276), (357, 281)
],
'right_eyebrow': [
(378, 283), (393, 278), (410, 281), (423, 289), (431, 303)
],
'nose_bridge': [
(366, 297), (365, 305), (364, 314), (363, 323)
],
'nose_tip': [
(347, 337), (355, 340), (364, 341), (373, 340), (382, 339)
],
'left_eye': [
(321, 304), (328, 296), (339, 296), (349, 304), (339, 305), (328, 305)
],
'right_eye': [
(386, 307), (397, 299), (407, 300), (415, 309), (407, 309), (396, 308)
],
'top_lip': [
(332, 363), (343, 355), (355, 351), (363, 353), (372, 352), (385, 357), (399, 366), (394, 365), (372, 359), (363, 359), (355, 359), (337, 362)
],
'bottom_lip': [
(399, 366), (385, 368), (372, 369), (363, 369), (354, 368), (343, 366), (332, 363), (337, 362), (354, 360), (363, 361), (372, 361), (394, 365)
]
}
]
这是一个包含字典的列表,其中每个键的值是一个元组列表。
for k in lst[0].keys():
print(lst[0][k])
要跳过chin
:
for k in lst[0].keys():
if k == "chin":
continue
print(lst[0][k])
答案 2 :(得分:0)
您可以这样做:
output = []
for k in lst[0].keys():
for p in lst[0][k]:
output.append(p)
print(output)
答案 3 :(得分:0)
您可以执行以下操作: 首先,将分配给下巴,眼睛等的所有坐标分开,并附加到单独的数组中。
然后循环遍历单个数组中存在的所有数组,将其放入另一个数组中。 现在,最终阵列已准备就绪,可以使用。
test = []
for a in landmark[0]:
test.append(landmark[0][a])
final = []
for a in range(0, 17):
final.append(test[0][a])
for b in range(1, 3):
for a in range(0, 5):
final.append(test[b][a])
for a in range(0, 4):
final.append(test[3][a])
for a in range(0, 5):
final.append(test[4][a])
for b in range(5, 7):
for a in range(0, 6):
final.append(test[b][a])
for b in range(7, 9):
for a in range(0, 12):
final.append(test[b][a])
length = len(final)
print(final)
答案 4 :(得分:0)
co_ordinates = []
for rec in you_data:
for data in rec:
co_ordinates.extend(rec[data])
Output:
[(297, 322), (297, 339), (299, 356), (301, 373), (305, 390), (312, 405), (325, 415), (342, 418), (362, 420), (383, 421), (402, 421), (418, 415), (427, 403), (433, 387), (437, 370), (440, 352), (443, 335), (306, 296), (313, 282), (326, 276), (342, 276), (357, 281), (378, 283), (393, 278), (410, 281), (423, 289), (431, 303), (366, 297), (365, 305), (364, 314), (363, 323), (347, 337), (355, 340), (364, 341), (373, 340), (382, 339), (321, 304), (328, 296), (339, 296), (349, 304), (339, 305), (328, 305), (386, 307), (397, 299), (407, 300), (415, 309), (407, 309), (396, 308), (332, 363), (343, 355), (355, 351), (363, 353), (372, 352), (385, 357), (399, 366), (394, 365), (372, 359), (363, 359), (355, 359), (337, 362), (399, 366), (385, 368), (372, 369), (363, 369), (354, 368), (343, 366), (332, 363), (337, 362), (354, 360), (363, 361), (372, 361), (394, 365)]