0
"group1": [{"key1": "AAA", "\xef\xbb\xbfUser_ID'": "BBB", "key3": "CCC", "key4": "DDD"},
            {"key1": "EEE", "key3": "FFF", "key4": "\xef\xbb\xbfUser_ID'", "key4": "HHH"},
             {"key1": "AAA", "key3": "BBB", "\xef\xbb\xbfUser_ID'": "JJJ", "key4": "III"}]

すべてをすばやく簡単に実行し、「\xef\xbb\xbfUser_ID」のすべての値を「User_ID」などに置き換えるにはどうすればよいでしょうか?

多くのディクショナリ値を含む長いリストになる可能性があるため、速度とリソースに重点が置かれます。

4

1 に答える 1

2

以下はどうですか?

# Dictionaries with "\xef\xbb\xbfUser_ID'" in both keys and values:
group1 = [{"key1": "AAA", "\xef\xbb\xbfUser_ID'": "BBB", "key3": "CCC", "key4": "DDD"},
          {"key1": "EEE", "key3": "FFF", "key4": "\xef\xbb\xbfUser_ID'", "key4": "HHH"},
          {"key1": "AAA", "key3": "BBB", "\xef\xbb\xbfUser_ID'": "JJJ", "key4": "III"}]

for group_dict in group1:

    # Fast key replacement (no test in for loop):
    try:
        group_dict['User_ID'] = group_dict.pop("\xef\xbb\xbfUser_ID'")
    except KeyError:
        pass

    # Value replacement:
    for (key, value) in group_dict.iteritems():
        if value == "\xef\xbb\xbfUser_ID'":
            group_dict[key] = 'User_ID'

print group1  # Cleaned up dictionaries

収量

[{'key3': 'CCC', 'key1': 'AAA', 'User_ID': 'BBB', 'key4': 'DDD'},
 {'key3': 'FFF', 'key1': 'EEE', 'key4': 'HHH'},
 {'key3': 'BBB', 'key1': 'AAA', 'User_ID': 'JJJ', 'key4': 'III'}]

これは (新しい文字列のメモリを超えて"User_ID") 多くのメモリを使用せず、これより高速なものは考えられません。

2 番目の辞書には 2 つの「key4」キーがあることに注意してください。これは奇妙です (辞書には一意のキーがあります)。

于 2013-07-19T05:17:31.367 に答える