python循环字典键内的多个列表(已编辑)

2024-10-03 19:26:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我对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']

但我想这样输出(具有多个字符串数据值的单个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'}`

有没有办法像这样把多个列表编成一本字典?你知道吗

顺便说一下,我把问题编辑了一下!谢谢


Tags: 数据in脚本字典varwwwrrdtraffic
2条回答

您可以这样尝试:

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'}

说明:

使用for-loop迭代dict项:

for key, value in dict1.items():

检查条件值的长度是否大于1,如果条件成功,则使用str.join()将list的元素与,连接。 并用key和value更新新的dict2。你知道吗

如果条件失败,则直接将键和value[0]添加到新的dict2

假设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]))

相关问题 更多 >