[解決済み] Python - 「ValueError: not enough values to unpack (expected 2, got 1)」の修正方法 [closed].
2022-01-31 20:20:32
質問
関数を書きたい
add_to_dict(d, key_value_pairs)
は、与えられたキーと値のペアを Python 辞書に追加します。引数
key_value_pairs
という形式のタプルのリストになります。
(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: 解凍する値が足りない (期待値 2、取得値 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を使って簡単なzipファイルの解凍パスワードを手作業で解く
-
PyQt5はユーザーログインGUIインターフェースとログイン後のジャンプを実装しています。
-
Python Pillow Image.save jpg画像圧縮問題
-
[解決済み】「SyntaxError.Syntax」は何ですか?Missing parentheses in call to 'print'」はPythonでどういう意味ですか?
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み】SyntaxError: デフォルト以外の引数がデフォルトの引数に続く
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。
-
[解決済み】 'numpy.float64' オブジェクトは反復可能ではない
-
[解決済み】django インポートエラー - core.managementという名前のモジュールがない
最新
-
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を使ったオフィス自動化コード例
-
Python百行で韓服サークルの画像クロールを実現する
-
パッケージングツールPyinstallerの使用と落とし穴の回避
-
任意波形を生成してtxtで保存するためのPython実装
-
FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み】numpy: true_divide で無効な値に遭遇
-
[解決済み】Pythonでgoogle APIのJSONコードを読み込むとエラーになる件
-
[解決済み】 AttributeError("'str' object has no attribute 'read'")
-
[解決済み】django インポートエラー - core.managementという名前のモジュールがない