Here's my best guess at what you're looking for.
import networkx as nx
my_dictionary = { 'A' : {1 , 2, 4 }, 'B' : {1,3}, 'C' : {5}}
G = nx.Graph()
G.add_edges_from([k,x] for k,v in my_dictionary.items() for x in v)
nx.draw(G, pos = nx.bipartite_layout(G,my_dictionary.keys()),
with_labels = True, node_color = 'orange')
The result:

Only using the one-edge nodes:
import networkx as nx
import matplotlib.pyplot as plt
from collections import defaultdict
my_dictionary = { 'A' : {1 , 2, 4 }, 'B' : {1,3}, 'C' : {5}}
G = nx.Graph()
G.add_edges_from([k,x] for k,v in my_dictionary.items() for x in v)
pos = nx.bipartite_layout(G,my_dictionary.keys())
nx.draw(G, pos = pos,with_labels = True, node_color = 'orange')
plt.show()
one_link_nodes = [n for n,k in G.degree if k==1]
G.remove_nodes_from(one_link_nodes)
# pos = nx.bipartite_layout(G,my_dictionary.keys()) # if you don't want to reuse the layout above
nx.draw(G, pos=pos, with_labels = True, node_color = 'orange')
plt.show()
Resulting images:


Another alternative to consider:
import networkx as nx
import matplotlib.pyplot as plt
my_dictionary = { 'A' : {1 , 2, 4 }, 'B' : {1,3}, 'C' : {5}}
G = nx.Graph()
G.add_edges_from([k,x] for k,v in my_dictionary.items() for x in v)
pos = nx.bipartite_layout(G,my_dictionary.keys())
one_link_nodes = set(n for n,k in G.degree if k==1)
styles = ['--' if u in one_link_nodes or v in one_link_nodes else '-' for u,v in G.edges]
edge_colors = ['gray' if u in one_link_nodes or v in one_link_nodes else 'k' for u,v in G.edges]
node_colors = ['lightsteelblue' if n in one_link_nodes else 'orange' for n in G.nodes]
nx.draw(G, pos = pos, with_labels = True, node_color = node_colors,
edge_color = edge_colors, style = styles)
plt.show()
The result:
