我的 json 檔案data.json看起來像這樣
[
{"host" : "192.168.0.25", "username":"server2", "path":"/home/server/.ssh/01_id"},
{"host" : "192.168.0.26", "username":"server3", "path":"/home/server/.ssh/01_id"}
]
我只希望回圈以這種方式發生(讓我們忽略遠程變數)
for remotes,host,username in zip(remote , data["host"] ,data["username"]):
這是我得到的錯誤
for remotes,host,username in list(zip(remote , data["host"] ,data["username"])):
TypeError: list indices must be integers or slices, not str
uj5u.com熱心網友回復:
您需要迭代資料以提取host和username值,以便您可以zip將它們添加到remote串列中:
data = [
{"host" : "192.168.0.25", "username":"server2", "path":"/home/server/.ssh/01_id"},
{"host" : "192.168.0.26", "username":"server3", "path":"/home/server/.ssh/01_id"}
]
hosts_users = [(d['host'], d['username']) for d in data]
remote = [1, 2]
for remote, (host, username) in zip(remote, hosts_users):
print(remote, host, username)
輸出:
1 192.168.0.25 server2
2 192.168.0.26 server3
uj5u.com熱心網友回復:
如果您json首先需要讀取檔案,然后您可以將該資料作為 python 物件進行操作
import json
with open("data.json") as json_file:
data = json.load(json_file)
for d in data:
host = d['host']
username = d['username']
path = d['path']
print(host, username, path)
uj5u.com熱心網友回復:
您可以通過使用帶有zip的地圖來完成
# uncomment following code if data reside in json
# import json
# file = open('path_of_your_json')
# data = json.load(file)
data = [
{"host" : "192.168.0.25", "username":"server2", "path":"/home/server/.ssh/01_id"},
{"host" : "192.168.0.26", "username":"server3", "path":"/home/server/.ssh/01_id"}
]
for (host, username, path) in zip(*zip(*map(lambda x: x.values(), data))):
print(host, username, path)
# whatever you want
zip(*zip(*map(lambda x: x.values(), data)))此行將以線性方式提供資料
uj5u.com熱心網友回復:
由于您特別提到您希望使用 zip 列方式迭代資料,因此您可以這樣做。
假設 json 檔案名為 SO.json
在變數data中加載json物件。
import json
f = open(r'C:\Users\YYName\Desktop\Temp\SO.json')
data = json.load(f)
現在您可以使用 zip 和列遍歷值。將 json 資料加載到 pandas 資料框中。
import pandas as pd
df = pd.DataFrame(data)
for host,username in zip(df["host"] ,df["username"]):
print(host, username)
假設 remote 的長度與 json 中的行數相同。你現在可以做
for remotes,host,username in zip(remote , df["host"] ,df["username"]):
print(remotes, host, username)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/490933.html
