[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].
2022-01-01 08:01:55
質問
与えられたキーと値のペアを、Pythonの辞書である
key_value_pairs
は (key, value) という形式のタプルのリストで、関数は変更されたすべての key/value ペア (元の値も含む) のリストを返す必要があります、コードは以下の通りです。
def add_to_dict(d, key_value_pairs):
newlist = []
for key,value in d:
for x,y in key_value_pairs:
if x == key:
newlist.append(x,y)
return newlist
実行すると、エラーが発生します。
ValueError: not enough values to unpack (expected 2, got 1)
解決方法は?
コードのデバッグ方法
'''
@param d: a dictionary
@param key_value_pairs: a list of tuples in the form `(key, value)`
@return: a list of tuples of key-value-pair updated in the original dictionary
'''
def add_to_dict(d, key_value_pairs):
newlist = []
for pair in key_value_pairs:
# As is mentioned by Mr Patrick
# you might not want to unpack the key-value-pair instantly
# to avoid possible corrupted data input from
# argument `key_value_pairs`
# if you can't guarantee its integrity
try:
x, y = pair
except (ValueError):
# unable to unpack tuple
tuple_length = len(pair)
raise RuntimeError('''Invalid argument `key_value_pairs`!
Corrupted key-value-pair has ({}) length!'''.format(tuple_length))
# Instead of using nesting loop
# using API would be much more preferable
v = d.get(x)
# Check if the key is already in the dictionary `d`
if v:
# You probably mean to append a tuple
# as `array.append(x)` takes only one argument
# @see: https://docs.python.org/3.7/library/array.html#array.array.append
#
# Besides, hereby I quote
# "The function should return a list of all of the key/value pairs which have changed (with their original values)."
# Thus instead of using the following line:
#
# newlist.append((x, y,))
#
# You might want a tuple of (key, old_value, new_value)
# Hence:
newlist.append((x, v, y,))
# I don't know if you want to update the key-value-pair in the dictionary `d`
# take out the following line if you don't want it
d[x] = y
return newlist
をトラバースする方法を知りたい場合は、残りの部分を読み進めてください。
dict
オブジェクトを適切に作成します。
をトラバースするさまざまな方法
dict
オブジェクト
Python 3.x
次のセグメントは
dict
で
Python 3.x
.
キーの集合を反復処理する
for key in d:
value = d[key]
print(key, value)
the code segment above has the same effect as the following one:
for key in d.keys():
value = d[key]
print(key, value)
キーと値のペアのセットを反復する
for key, value in d.items():
print(key, value)
値の集合を反復する
for value in d.values():
print(value)
Python 2.x
次のセグメントは
dict
で
Python 2.x
.
キーの集合を反復処理する
for key in d:
value = d[key]
print(key, value)
keys()
が返されます。
リスト
辞書のキーセット
d
for key in d.keys():
value = d[key]
print(key, value)
iterkeys()
は
イテレータ
のキーセットの辞書
d
for key in d.iterkeys():
value = d[key]
print(key, value)
キーと値のペアのセットを反復する
values()
が返されます。
リスト
のキー・バリュー・ペアのセットである。
d
for key, value in d.items():
print(key, value)
itervalues()
は
イテレータ
のキー・バリュー・ペアのセット。
d
for key, value in d.iteritems():
print(key, value)
値の集合を反復する
values()
は辞書の値集合のリストを返す。
d
for value in d.values():
print(value)
itervalues()
辞書の値集合のイテレータを返す。
d
for value in d.itervalues():
print(value)
参考
関連
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
python string splicing.join()とsplitting.split()の説明
-
PicgoのイメージベッドツールをPythonで実装する
-
Pythonの学習とデータマイニングのために知っておくべきターミナルコマンドのトップ10
-
[解決済み】ImportError: PILという名前のモジュールがない
-
[解決済み】終了コード -1073741515 (0xC0000135)でプロセス終了)
-
[解決済み】「SyntaxError.Syntax」は何ですか?Missing parentheses in call to 'print'」はPythonでどういう意味ですか?
-
[解決済み】Python: OverflowError: 数学の範囲エラー
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。
-
[解決済み】 'numpy.float64' オブジェクトは反復可能ではない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PythonによるLeNetネットワークモデルの学習と予測
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
PyQt5はユーザーログインGUIインターフェースとログイン後のジャンプを実装しています。
-
風力制御におけるKS原理を深く理解するためのpythonアルゴリズム
-
PythonでECDSAを実装する方法 知っていますか?
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み] _tkinter.TclError: 表示名がなく、$DISPLAY環境変数もない。
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。