Is it indeed the case that to access edge attributes in networkx the awkward third form below is necessary and no variation of the more svelte first two forms will do?
import networkx as nx
G = nx.Graph()
G.add_edge(1, 2, weight=4.7)
G.add_edge(3, 4, weight=5.8)
for node1, node2, data in G.edges(data=True):
print(data['weight'])