1
scriptB0y 2017-11-27 19:06:45 +08:00 1
result = defaultdict(list)
for k,v in value_port.items(): result[re.search(r"_(\d{1,5})").group(1)].append({k:v}) 随手写的,我觉得差不多 |
3
Thanks 2017-11-27 19:39:06 +08:00 1
可以根据字符串包含判断
1. 将 port 转成字符串,然后判断是否被包含在某个键中; 2. 或者将键根据下划线拆分,然后判断第二个位置的字符串是不是等于 port 元素的字符串形式。 另外,如果需要动态创建 'port_80' 这种变量的话,可以看一下 locals() 函数。 |
6
cbiqih 2017-11-27 20:37:06 +08:00 1
port_80, port_443 = tuple(list(filter(lambda x: x.endswith(str(i)), value_port)) for i in port)
|
8
cbiqih 2017-11-27 21:05:48 +08:00 1
貌似并非是你要的结果,你要生成的是字典,上面生成的是列表哇~
|
11
jxie0755 2017-11-28 00:40:22 +08:00 1
哥,怎么又是你~~~由于我也是新手,最近才学了几个月 python,所以权当自己练习了哈~~
先感谢你的'感谢' # 动态生成你要的变量名 port = [80, 443] new_port = [] for i in port: new_port.append('port_' + str(i)) print(new_port) for i in range(len(new_port)): vars()[new_port[i]] = temp[i] print(port_80) print(port_443) # 简写可以变成 port = [80, 443] new_port = ['port_' + str(i) for i in port] # 最终结果 port = [80, 443] value_port = {'TX_80': 0, 'RX_443': 0, 'RX_80': 0, 'TX_443': 0} new_port = ['port_' + str(i) for i in port] temp = [] for i in port: new_dict = {} for keys, values in value_port.items(): if str(i) in keys: new_dict[keys] = values temp.append(new_dict) for i in range(len(new_port)): vars()[new_port[i]] = temp[i] 我只能帮你到这里了,这个把 string 变成变量名的方法我还真不会,stackoverlfow 上面都没有,是临时 google 找出来的. 我看 stackoverflow 上面大多数人是反对这么做的, 觉得这么做很吃力不讨好的感觉? 我是新手也不太懂 |
12
jxie0755 2017-11-28 00:42:16 +08:00 1
补一下,不知道为什么缩进没了...
port = [80, 443] value_port = {'TX_80': 0, 'RX_443': 0, 'RX_80': 0, 'TX_443': 0} new_port = ['port_' + str(i) for i in port] temp = [] for i in port: new_dict = {} for keys, values in value_port.items(): if str(i) in keys: new_dict[keys] = values temp.append(new_dict) for i in range(len(new_port)): vars()[new_port[i]] = temp[i] |
13
jxie0755 2017-11-28 00:44:39 +08:00 1
擦,不管怎么整,缩进都被吞没, 用等号代替
port = [80, 443] value_port = {'TX_80': 0, 'RX_443': 0, 'RX_80': 0, 'TX_443': 0} new_port = ['port_' + str(i) for i in port] temp = [] for i in port: ==new_dict = {} ==for keys, values in value_port.items(): ====if str(i) in keys: ======new_dict[keys] = values ==temp.append(new_dict) for i in range(len(new_port)): ==vars()[new_port[i]] = temp[i] print(port_80) print(port_443) |