2014-07-07 4 views
1

Привет, ребята, просто интересно, можно ли преобразовать список ниже в dict, я знаю, что это изначально диктофон, но теперь он отображается как список, если он может быть преобразован, самый простой методИзвлечение данных из списка

я попробовал d = dict(zip(*[iter(list[0])]*2)), но это не работает

это список:

[[{'identityb32': 'qa46imyg4njipjsgpudn7vnn2zub2tec', 'pubdate': '2014-07-07', 'dirport': '80', 'ip': '18.238.2.85', 'orport': '443', 'identityhash': '8039e43306e35287a6467d06dfd5add6681d4c82', 'nick': 'Onions', 'version': 'Tor 0.2.3.25', 'flags': ['Exit', 'Fast', 'HSDir', 'Running', 'V2Dir', 'Valid'], 'identity': '\x809\xe43\x06\xe3R\x87\xa6F}\x06\xdf\xd5\xad\xd6h\x1dL\x82', 'digest': 'lh2LprFLd0bdvtIfPkz58//mgZk', 'pubtime': '09:37:21'}, {'identityb32': 'qbwfsrn3y5mmcnshotg77clvxjufngso', 'pubdate': '2014-07-07', 'dirport': '80', 'ip': '109.120.148.60', 'orport': '443', 'identityhash': '806c5945bbc758c1364774cdff8975ba68569a4e', 'nick': 'Reactor', 'version': 'Tor 0.2.4.22', 'flags': ['Exit', 'Fast', 'HSDir', 'Running', 'V2Dir', 'Valid'], 'identity': '\x80lYE\xbb\xc7X\xc16Gt\xcd\xff\x89u\xbahV\x9aN', 'digest': 'bDAS/RN7q4injGzkIXobcsSwS6c', 'pubtime': '08:55:57'}, {'identityb32': 'qcrds2ps562vf3ctnuoob4lgtmvt4zau', 'pubdate': '2014-07-07', 'dirport': '9030', 'ip': '195.154.12.66', 'orport': '9001', 'identityhash': '80a23969f2efb552ec536d1ce0f1669b2b3e6414', 'nick': 'han1', 'version': 'Tor 0.2.4.22', 'flags': ['Fast', 'HSDir', 'Named', 'Running', 'Stable', 'V2Dir', 'Valid'], 'identity': '\x80\xa29i\xf2\xef\xb5R\xecSm\x1c\xe0\xf1f\x9b+>d\x14', 'digest': 'FoPXNW58WS4eoCWB/eIK7j5yS4E', 'pubtime': '01:09:22'}], [{'identityb32': 'rzjbswyebloufopae2j46a6272wrwlae', 'pubdate': '2014-07-07', 'dirport': '80', 'ip': '77.247.181.164', 'orport': '443', 'identityhash': '8e52195b040add42b9e02693cf03dafead1b2c04', 'nick': 'rainbowwarrior', 'version': 'Tor 0.2.5.3-alpha', 'flags': ['Exit', 'Fast', 'Guard', 'HSDir', 'Running', 'Stable', 'Unnamed', 'V2Dir', 'Valid'], 'identity': '\x8eR\x19[\x04\n\xddB\xb9\xe0&\x93\xcf\x03\xda\xfe\xad\x1b,\x04', 'digest': '67A4paMg3mQUqHei8jNSWR2QWsg', 'pubtime': '08:29:31'}, {'identityb32': 'rzniakcq6yj3xdbk766e4yuspkhm2bq2', 'pubdate': '2014-07-07', 'dirport': '9030', 'ip': '212.116.188.158', 'orport': '9001', 'identityhash': '8e5a802850f613bb8c2affbc4e62927a8ecd061a', 'nick': '7sYiz', 'version': 'Tor 0.2.3.25', 'flags': ['Exit', 'Fast', 'Guard', 'HSDir', 'Named', 'Running', 'Stable', 'V2Dir', 'Valid'], 'identity': '\x8eZ\x80(P\xf6\x13\xbb\x8c*\xff\xbcNb\x92z\x8e\xcd\x06\x1a', 'digest': '5+O3G9AMJujmUVxO3Fhz7MSPpHI', 'pubtime': '12:34:28'}, {'identityb32': 'rzs3murcnwhdeyj6blsfj7ipltbpmn44', 'pubdate': '2014-07-07', 'dirport': '9030', 'ip': '176.31.122.216', 'orport': '9001', 'identityhash': '8e65b652226d8e32613e0ae454fd0f5cc2f6379c', 'nick': 'somewhere', 'version': 'Tor 0.2.4.22', 'flags': ['Fast', 'HSDir', 'Running', 'Stable', 'Unnamed', 'V2Dir', 'Valid'], 'identity': '\x8ee\xb6R"m\x8e2a>\n\xe4T\xfd\x0f\\\xc2\xf67\x9c', 'digest': 'lEgmmiJcOvzsib9fZjgaxaSG6to', 'pubtime': '03:27:26'}]] 

если не есть в любом случае для извлечения данных из списка, например, чтобы получить все данные например, связанные с идентификацией?

идеально преобразования этого обратно к Словарю будет лучшим решением

Благодаря

+0

внутренний список содержит Dict –

+1

@ user29644021, у вас есть более чем на подсписке поэтому ответ вы приняли доступ только один и игнорируемые все остальные тексты в вашем списке. –

+0

@ user29644021 Вы все еще только получаете половину dicts –

ответ

3
list=[[{'identityb32': 'qa46imyg4njipjsgpudn7vnn2zub2tec', 'pubdate': '2014-07-07', 'dirport': '80', 'ip': '18.238.2.85', 'orport': '443', 'identityhash': '8039e43306e35287a6467d06dfd5add6681d4c82', 'nick': 'Onions', 'version': 'Tor 0.2.3.25', 'flags': ['Exit', 'Fast', 'HSDir', 'Running', 'V2Dir', 'Valid'], 'identity': '\x809\xe43\x06\xe3R\x87\xa6F}\x06\xdf\xd5\xad\xd6h\x1dL\x82', 'digest': 'lh2LprFLd0bdvtIfPkz58//mgZk', 'pubtime': '09:37:21'}, {'identityb32': 'qbwfsrn3y5mmcnshotg77clvxjufngso', 'pubdate': '2014-07-07', 'dirport': '80', 'ip': '109.120.148.60', 'orport': '443', 'identityhash': '806c5945bbc758c1364774cdff8975ba68569a4e', 'nick': 'Reactor', 'version': 'Tor 0.2.4.22', 'flags': ['Exit', 'Fast', 'HSDir', 'Running', 'V2Dir', 'Valid'], 'identity': '\x80lYE\xbb\xc7X\xc16Gt\xcd\xff\x89u\xbahV\x9aN', 'digest': 'bDAS/RN7q4injGzkIXobcsSwS6c', 'pubtime': '08:55:57'}, {'identityb32': 'qcrds2ps562vf3ctnuoob4lgtmvt4zau', 'pubdate': '2014-07-07', 'dirport': '9030', 'ip': '195.154.12.66', 'orport': '9001', 'identityhash': '80a23969f2efb552ec536d1ce0f1669b2b3e6414', 'nick': 'han1', 'version': 'Tor 0.2.4.22', 'flags': ['Fast', 'HSDir', 'Named', 'Running', 'Stable', 'V2Dir', 'Valid'], 'identity': '\x80\xa29i\xf2\xef\xb5R\xecSm\x1c\xe0\xf1f\x9b+>d\x14', 'digest': 'FoPXNW58WS4eoCWB/eIK7j5yS4E', 'pubtime': '01:09:22'}], [{'identityb32': 'rzjbswyebloufopae2j46a6272wrwlae', 'pubdate': '2014-07-07', 'dirport': '80', 'ip': '77.247.181.164', 'orport': '443', 'identityhash': '8e52195b040add42b9e02693cf03dafead1b2c04', 'nick': 'rainbowwarrior', 'version': 'Tor 0.2.5.3-alpha', 'flags': ['Exit', 'Fast', 'Guard', 'HSDir', 'Running', 'Stable', 'Unnamed', 'V2Dir', 'Valid'], 'identity': '\x8eR\x19[\x04\n\xddB\xb9\xe0&\x93\xcf\x03\xda\xfe\xad\x1b,\x04', 'digest': '67A4paMg3mQUqHei8jNSWR2QWsg', 'pubtime': '08:29:31'}, {'identityb32': 'rzniakcq6yj3xdbk766e4yuspkhm2bq2', 'pubdate': '2014-07-07', 'dirport': '9030', 'ip': '212.116.188.158', 'orport': '9001', 'identityhash': '8e5a802850f613bb8c2affbc4e62927a8ecd061a', 'nick': '7sYiz', 'version': 'Tor 0.2.3.25', 'flags': ['Exit', 'Fast', 'Guard', 'HSDir', 'Named', 'Running', 'Stable', 'V2Dir', 'Valid'], 'identity': '\x8eZ\x80(P\xf6\x13\xbb\x8c*\xff\xbcNb\x92z\x8e\xcd\x06\x1a', 'digest': '5+O3G9AMJujmUVxO3Fhz7MSPpHI', 'pubtime': '12:34:28'}, {'identityb32': 'rzs3murcnwhdeyj6blsfj7ipltbpmn44', 'pubdate': '2014-07-07', 'dirport': '9030', 'ip': '176.31.122.216', 'orport': '9001', 'identityhash': '8e65b652226d8e32613e0ae454fd0f5cc2f6379c', 'nick': 'somewhere', 'version': 'Tor 0.2.4.22', 'flags': ['Fast', 'HSDir', 'Running', 'Stable', 'Unnamed', 'V2Dir', 'Valid'], 'identity': '\x8ee\xb6R"m\x8e2a>\n\xe4T\xfd\x0f\\\xc2\xf67\x9c', 'digest': 'lEgmmiJcOvzsib9fZjgaxaSG6to', 'pubtime': '03:27:26'}]] 
d = {} 
for dic in l[0]: 
    d.update(dic) 
print d 
{'identityb32': 'qcrds2ps562vf3ctnuoob4lgtmvt4zau', 'pubdate': '2014-07-07', 'ip': '195.154.12.66', 'orport': '9001', 'digest': 'FoPXNW58WS4eoCWB/eIK7j5yS4E', 'dirport': '9030', 'identityhash': '80a23969f2efb552ec536d1ce0f1669b2b3e6414', 'nick': 'han1', 'version': 'Tor 0.2.4.22', 'flags': ['Fast', 'HSDir', 'Named', 'Running', 'Stable', 'V2Dir', 'Valid'], 'identity': '\x80\xa29i\xf2\xef\xb5R\xecSm\x1c\xe0\xf1f\x9b+>d\x14', 'pubtime': '01:09:22'} 

У вас есть более чем один подсписок в списке, так что вы, возможно, потребуются почтовыми и обновление, , но с вами используя dicts, используя те же клавиши, чтобы вы теряли определенные значения при обновлении до нового dict.

Если вы хотите, чтобы сгладить все dicts в единый список вас и создать несколько dicts, чтобы сохранить все значения или получить любые ключи значения, которые нужно в списке Комп:

flattened= ([x for y in l for x in y]) 

Это получит все хэши из всех dicts:

print [x.get('identityhash') for x in flattened] 

['8039e43306e35287a6467d06dfd5add6681d4c82', '806c5945bbc758c1364774cdff8975ba68569a4e', '80a23969f2efb552ec536d1ce0f1669b2b3e6414', '8e52195b040add42b9e02693cf03dafead1b2c04', '8e5a802850f613bb8c2affbc4e62927a8ecd061a', '8e65b652226d8e32613e0ae454fd0f5cc2f6379c'] 
+0

Это излишне сложно. –

+2

@NateMara, в списке есть больше элементов, а не только один dict, вы просто обращаетесь к нему. –

+0

AttributeError: объект 'str' не имеет атрибута 'get' – user2061913

1

Вы потеряете данные, если вы объедините dicts, так как внутренний список содержит несколько dicts с теми же ключами. Если вы просто хотите, хэш идентичности в списке, вы можете использовать список понимание:

>>> data = [[{'identityb32': 'qa46imyg4njipjsgpudn7vnn2zub2tec', 'pubdate': '2014-07-07', 'dirport': '80', 'ip': '18.238.2.85', 'orport': '443', 'identityhash': '8039e43306e35287a6467d06dfd5add6681d4c82', 'nick': 'Onions', 'version': 'Tor 0.2.3.25', 'flags': ['Exit', 'Fast', 'HSDir', 'Running', 'V2Dir', 'Valid'], 'identity': '\x809\xe43\x06\xe3R\x87\xa6F}\x06\xdf\xd5\xad\xd6h\x1dL\x82', 'digest': 'lh2LprFLd0bdvtIfPkz58//mgZk', 'pubtime': '09:37:21'}, {'identityb32': 'qbwfsrn3y5mmcnshotg77clvxjufngso', 'pubdate': '2014-07-07', 'dirport': '80', 'ip': '109.120.148.60', 'orport': '443', 'identityhash': '806c5945bbc758c1364774cdff8975ba68569a4e', 'nick': 'Reactor', 'version': 'Tor 0.2.4.22', 'flags': ['Exit', 'Fast', 'HSDir', 'Running', 'V2Dir', 'Valid'], 'identity': '\x80lYE\xbb\xc7X\xc16Gt\xcd\xff\x89u\xbahV\x9aN', 'digest': 'bDAS/RN7q4injGzkIXobcsSwS6c', 'pubtime': '08:55:57'}, {'identityb32': 'qcrds2ps562vf3ctnuoob4lgtmvt4zau', 'pubdate': '2014-07-07', 'dirport': '9030', 'ip': '195.154.12.66', 'orport': '9001', 'identityhash': '80a23969f2efb552ec536d1ce0f1669b2b3e6414', 'nick': 'han1', 'version': 'Tor 0.2.4.22', 'flags': ['Fast', 'HSDir', 'Named', 'Running', 'Stable', 'V2Dir', 'Valid'], 'identity': '\x80\xa29i\xf2\xef\xb5R\xecSm\x1c\xe0\xf1f\x9b+>d\x14', 'digest': 'FoPXNW58WS4eoCWB/eIK7j5yS4E', 'pubtime': '01:09:22'}], [{'identityb32': 'rzjbswyebloufopae2j46a6272wrwlae', 'pubdate': '2014-07-07', 'dirport': '80', 'ip': '77.247.181.164', 'orport': '443', 'identityhash': '8e52195b040add42b9e02693cf03dafead1b2c04', 'nick': 'rainbowwarrior', 'version': 'Tor 0.2.5.3-alpha', 'flags': ['Exit', 'Fast', 'Guard', 'HSDir', 'Running', 'Stable', 'Unnamed', 'V2Dir', 'Valid'], 'identity': '\x8eR\x19[\x04\n\xddB\xb9\xe0&\x93\xcf\x03\xda\xfe\xad\x1b,\x04', 'digest': '67A4paMg3mQUqHei8jNSWR2QWsg', 'pubtime': '08:29:31'}, {'identityb32': 'rzniakcq6yj3xdbk766e4yuspkhm2bq2', 'pubdate': '2014-07-07', 'dirport': '9030', 'ip': '212.116.188.158', 'orport': '9001', 'identityhash': '8e5a802850f613bb8c2affbc4e62927a8ecd061a', 'nick': '7sYiz', 'version': 'Tor 0.2.3.25', 'flags': ['Exit', 'Fast', 'Guard', 'HSDir', 'Named', 'Running', 'Stable', 'V2Dir', 'Valid'], 'identity': '\x8eZ\x80(P\xf6\x13\xbb\x8c*\xff\xbcNb\x92z\x8e\xcd\x06\x1a', 'digest': '5+O3G9AMJujmUVxO3Fhz7MSPpHI', 'pubtime': '12:34:28'}, {'identityb32': 'rzs3murcnwhdeyj6blsfj7ipltbpmn44', 'pubdate': '2014-07-07', 'dirport': '9030', 'ip': '176.31.122.216', 'orport': '9001', 'identityhash': '8e65b652226d8e32613e0ae454fd0f5cc2f6379c', 'nick': 'somewhere', 'version': 'Tor 0.2.4.22', 'flags': ['Fast', 'HSDir', 'Running', 'Stable', 'Unnamed', 'V2Dir', 'Valid'], 'identity': '\x8ee\xb6R"m\x8e2a>\n\xe4T\xfd\x0f\\\xc2\xf67\x9c', 'digest': 'lEgmmiJcOvzsib9fZjgaxaSG6to', 'pubtime': '03:27:26'}]] 
>>> identityhash = [i.get('identityhash') for j in data for i in j] 
>>> print(identityhash) 
['8039e43306e35287a6467d06dfd5add6681d4c82','806c5945bbc758c1364774cdff8975ba68569a4e','80a269f2efb552ec536d1ce0f1669b2b3e6414','8e52195b040add42b9e02693cf03dafead1b2c04','8e5a802850f6bb8c2affbc4e62927a8ecd061a','8e65b652226d8e32613e0ae454fd0f5cc2f6379c'] 
+1

есть больше того, что данные [0] [0] задают в списке, поэтому вам нужен цикл. –

+0

@PadraicCunningham Я вижу это сейчас. –

+0

все еще не имеет доступа ко всем dicts –

Смежные вопросы