цикл Python над несколькими списками внутри словарного ключа (отредактировано) - PullRequest
0 голосов
/ 24 мая 2018

Я немного озадачен циклом над словарем Python.Одна точка внутри моего скрипта возвращает данные вроде этого:

 [u'/var/www/cacti/rra/r1f-ktrx06zhry_traffic_in_14644.rrd']

 [u'/var/www/cacti/rra/r1f-tsax02zhry_traffic_in_14954.rrd', 
  u'/var/www/cacti/rra/r1f-tsax04zhry_traffic_in_14966.rrd'] 
  [] 
 [u'/var/www/cacti/rra/r1f-kyrx01zhry_traffic_in_14717.rrd']

Но я хочу выводить вот так (Single dict с несколькими строковыми значениями данных)

{u'GDR': u'/var/www/cacti/rra/r1f-gdrx06zhry_traffic_in_14632.rrd', u'TSA': 
u'/var/www/cacti/rra/r1f-tsax02zhry_traffic_in_14954.rrd', 
u'/var/www/cacti/rra/r1f-tsax04zhry_traffic_in_14966.rrd'}`

Есть ли способысделать несколько списков в одном словаре, как это?

Ps - я немного отредактировал вопросы!Спасибо

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Вы можете попробовать вот так:

dict1 = {u'GDR': [u'/var/www/cacti/rra/r1f-gdrx06zhry_traffic_in_14632.rrd'], u'TSA': [u'/var/www/cacti/rra/r1f-tsax02zhry_traffic_in_14954.rrd', u'/var/www/cacti/rra/r1f-tsax04zhry_traffic_in_14966.rrd']}

dict2 = dict()
for key, value in dict1.items():
    if isinstance(value, list) and len(value) > 1:
        value = ', '.join(value)
        dict2[key] = value

    else:
        dict2[key] = value[0]
print(dict2)

Вывод:

{'GDR': '/var/www/cacti/rra/r1f-gdrx06zhry_traffic_in_14632.rrd', 'TSA': '/var/www/cacti/rra/r1f-tsax02zhry_traffic_in_14954.rrd, /var/www/cacti/rra/r1f-tsax04zhry_traffic_in_14966.rrd'}

Объяснение:

Перебор элементов dict с помощью for-loop:

for key, value in dict1.items():

Проверьте для условия, превышает ли длина значения 1 и, если условие выполнено успешно, с помощью str.join() соедините элементы списка с помощью ,.и обновите новый dict2 ключом и значением.

Если условие не выполнено, добавьте ключ и value[0] к новому dict2

0 голосов
/ 24 мая 2018

Допустим, d - ваш словарь. Для этого

 for a in d:
     d[a]= ",".join([str(x) for x in d[a]]) 

также можно использовать функцию map,

for a in d:
   d[a]= ",".join(map(str,d[a]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...