如何获得字典中的值倍数数组

时间:2019-11-22 19:34:17

标签: python arrays computer-vision

给出:

[{'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)之类的坐标

5 个答案:

答案 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)]