2016-07-07 5 views
0

私は最初の "pts"を取り除き、2をlocとptsのキーとして使い、imsize、loc、pts、imsizeはその値のキーです。Python - このリストを辞書に変更するには

これは私のリストです:

test = [{'pts': u"""{"2": {"loc": [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32], "pts": [[ 
238.12358231315642, 253.66068427891196], [458.64277680287756, 
241.96368624623565], [697.01528407931528, 227.18853083653903], 
[958.16615594570135, 201.82451404989325], [1246.281686434784, 
203.42515588594387], [1548.4572965158027, 241.5523054071067], 
[1892.7592776185272, 342.33495115591734], [2254.5289081772476, 
445.98514873992008], [2656.9656149224697, 571.79649071207928], 
[2971.1562661999892, 867.70244034080304], [3068.3911866286853, 
1286.0266095582174], [2929.8340389691793, 1672.0031179683222], 
[2613.8132245402226, 1903.4008185146297], [2238.0791358590532, 
1946.1114436655755], [1891.3179056028878, 1862.0534199001079], 
[1575.3878471688531, 1818.865481764926], [1287.8256402921395, 
1766.8583248583836], [1026.4040596301347, 1702.4873909751091], 
[783.93932060128668, 1640.5323348318664], [560.42180223554942, 
1588.6583330557301], [354.57960965335764, 1540.1880782707833], 
[164.40489058630092, 1498.9624158157519]], "imsize": [3264, 2448]}, 
"43": {"loc": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], 
"pts": [[986.9522062723704, 697.0146815449186], [1178.2569415526625, 
664.0692929800059], [1360.425560676298, 662.1313289467757], 
[1526.8136155293448, 681.7878212838245], [1683.2349982114938, 
697.2915335496658], [1827.4748926847676, 710.8572817822769], 
[1962.0249669918903, 720.2702499436805], [2086.054665118621, 
725.8072900386238], [2203.7167671361667, 730.7906261240727], 
[2313.903865025539, 730.7906261240728], [2417.1696627962324, 
733.2822941667973], [2513.2373084434994, 760.4137906320195], 
[2603.7679139958227, 795.2971432301624], [2689.5920354674445, 
829.0730878093167], [2769.3254128346284, 857.0351402887804], 
[2840.4763780546505, 917.1120253189156], [2882.55788277622, 
1023.4231951418275]], "imsize": [3264, 2448]}, 
"47": {"loc": [34, 35, 36], "pts": [[1393.0609259457722, 
1700.979369842461], [1193.0180580859501, 1746.2349694566501], 
[957.55776444111029, 1801.984621155289]], 
"imsize": [3264, 2448]}}"""}] 

私はこれを試してみました:あなたはここにキーを使用する必要があるとして

 test = test[0] 
     a = test[0].pts 

     print test 
     print a #not print a 

答えて

1

あなたが試す解析できる辞書へのポイントの値を変更する場合:

points = eval(test[0]['pts']) 

これはとpointsが同じようになります:

{'47': {'loc': [34, 35, 36], 
     'pts': [[1393.0609259457722, 1700.979369842461], [1193.01805808595, 1746.23496945665], [957.5577644411103, 1801.984621155289]], 
     'imsize': [3264, 2448]}, 
'2': {'loc': [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32], 
     'pts': [[238.12358231315642, 253.66068427891196], [458.64277680287756, 241.96368624623565], [697.0152840793153, 227.18853083653903], [958.1661559457013, 201.82451404989325], [1246.281686434784, 203.42515588594387], [1548.4572965158027, 241.5523054071067], [1892.7592776185272, 342.33495115591734], [2254.5289081772476, 445.9851487399201], [2656.9656149224697, 571.7964907120793], [2971.156266199989, 867.702440340803], [3068.3911866286853, 1286.0266095582174], [2929.8340389691793, 1672.0031179683222], [2613.8132245402226, 1903.4008185146297], [2238.079135859053, 1946.1114436655755], [1891.3179056028878, 1862.0534199001079], [1575.387847168853, 1818.865481764926], [1287.8256402921395, 1766.8583248583836], [1026.4040596301347, 1702.487390975109], [783.9393206012867, 1640.5323348318664], [560.4218022355494, 1588.65833305573], [354.57960965335764, 1540.1880782707833], [164.40489058630092, 1498.962415815752]], 
     'imsize': [3264, 2448]}, 
'43': {'loc': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], 
     'pts': [[986.9522062723704, 697.0146815449186], [1178.2569415526625, 664.0692929800059],[1360.425560676298, 662.1313289467757], [1526.8136155293448, 681.7878212838245],[1683.2349982114938, 697.2915335496658], [1827.4748926847676, 710.8572817822769],[1962.0249669918903, 720.2702499436805], [2086.054665118621, 725.8072900386238],[2203.7167671361667, 730.7906261240727], [2313.903865025539, 730.7906261240728],[2417.1696627962324, 733.2822941667973], [2513.2373084434994, 760.4137906320195],[2603.7679139958227, 795.2971432301624], [2689.5920354674445, 829.0730878093167],[2769.3254128346284, 857.0351402887804], [2840.4763780546505, 917.1120253189156],[2882.55788277622, 1023.4231951418275]], 
     'imsize': [3264, 2448]} 
} 

points['47']points['2']、またはpoints['43']の各キーを使用して、各ディクテーションを取得することができます。

1

代わり

print test[0]['pts'] 

を試してみてください。

+0

['pts']は読み込みがより明瞭で、ほとんどの場合常に.ptsより高速です! – user2589273

0

あなたが尋ねていることは少し不明だと思います。

辞書のリストがあり、リストの最初の要素(キーがpts)だけが気になるようです。次に、辞書のキーで何かをしたい。辞書のキーはJSON文字列であるため、デコードする必要があります。始めるために、次のことを試してみてください。

from pprint import pprint 
import json 

test = [{'pts': u"""{"2": {"loc": [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32], "pts": [[ 
238.12358231315642, 253.66068427891196], [458.64277680287756, 
241.96368624623565], [697.01528407931528, 227.18853083653903], 
[958.16615594570135, 201.82451404989325], [1246.281686434784, 
203.42515588594387], [1548.4572965158027, 241.5523054071067], 
[1892.7592776185272, 342.33495115591734], [2254.5289081772476, 
445.98514873992008], [2656.9656149224697, 571.79649071207928], 
[2971.1562661999892, 867.70244034080304], [3068.3911866286853, 
1286.0266095582174], [2929.8340389691793, 1672.0031179683222], 
[2613.8132245402226, 1903.4008185146297], [2238.0791358590532, 
1946.1114436655755], [1891.3179056028878, 1862.0534199001079], 
[1575.3878471688531, 1818.865481764926], [1287.8256402921395, 
1766.8583248583836], [1026.4040596301347, 1702.4873909751091], 
[783.93932060128668, 1640.5323348318664], [560.42180223554942, 
1588.6583330557301], [354.57960965335764, 1540.1880782707833], 
[164.40489058630092, 1498.9624158157519]], "imsize": [3264, 2448]}, 
"43": {"loc": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], 
"pts": [[986.9522062723704, 697.0146815449186], [1178.2569415526625, 
664.0692929800059], [1360.425560676298, 662.1313289467757], 
[1526.8136155293448, 681.7878212838245], [1683.2349982114938, 
697.2915335496658], [1827.4748926847676, 710.8572817822769], 
[1962.0249669918903, 720.2702499436805], [2086.054665118621, 
725.8072900386238], [2203.7167671361667, 730.7906261240727], 
[2313.903865025539, 730.7906261240728], [2417.1696627962324, 
733.2822941667973], [2513.2373084434994, 760.4137906320195], 
[2603.7679139958227, 795.2971432301624], [2689.5920354674445, 
829.0730878093167], [2769.3254128346284, 857.0351402887804], 
[2840.4763780546505, 917.1120253189156], [2882.55788277622, 
1023.4231951418275]], "imsize": [3264, 2448]}, 
"47": {"loc": [34, 35, 36], "pts": [[1393.0609259457722, 
1700.979369842461], [1193.0180580859501, 1746.2349694566501], 
[957.55776444111029, 1801.984621155289]], 
"imsize": [3264, 2448]}}"""}] 


# Print the original input (it's a list of dictionaries that map keys to JSON strings) 
pprint(test) 
pts = json.loads(test[0]['pts']) 
# Print the decoded JSON. 
pprint(pts) 
関連する問題