{"id":4890,"date":"2025-08-25T16:05:08","date_gmt":"2025-08-25T07:05:08","guid":{"rendered":"https:\/\/www.nblog09.com\/w\/?p=4890"},"modified":"2025-09-20T14:50:41","modified_gmt":"2025-09-20T05:50:41","slug":"hint2","status":"publish","type":"post","link":"https:\/\/www.nblog09.com\/w\/2025\/08\/25\/hint2\/","title":{"rendered":"Python\u306e\u578b\u30d2\u30f3\u30c8\uff1a\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u578b\u3068Optional\u578b\u306e\u4f7f\u3044\u65b9"},"content":{"rendered":"<h2 class=\"title-border\">Python\u306e\u578b\u30d2\u30f3\u30c8\uff1a\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u578b\u3068Optional\u578b\u306e\u4f7f\u3044\u65b9<\/h2>\n<p><a href=\"https:\/\/www.nblog09.com\/w\/2025\/08\/22\/hint1\/\">\u524d\u56de\u306f\u3001<\/a>\u578b\u30d2\u30f3\u30c8\u306e\u57fa\u672c\u7684\u306a\u5229\u7528\u65b9\u6cd5\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u305f\u3002<br \/>\n\u4eca\u56de\u306f\u3001\u30ea\u30b9\u30c8\u3084\u8f9e\u66f8\u306a\u3069\u306e\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u578b\u3068\u3001None\u3092\u8a31\u53ef\u3059\u308bOptional\u578b\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u89e3\u8aac\u3057\u3066\u3044\u304f\u3002<\/p>\n<div class=\"sub-item\">\n<h3>\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u578b\u306e\u578b\u30d2\u30f3\u30c8<\/h3>\n<p>\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u578b\u3068\u306f\u3001\u8907\u6570\u306e\u5024\u3092\u307e\u3068\u3081\u3066\u6271\u3046\u30c7\u30fc\u30bf\u578b\u306e\u3053\u3068\u3060\u3002Python \u3067\u306f list\u3001set\u3001tuple\u3001dict \u306a\u3069\u304c\u3053\u308c\u306b\u8a72\u5f53\u3059\u308b\u3002<\/p>\n<p><strong>\u30ea\u30b9\u30c8\uff08list\uff09\u306e\u578b\u30d2\u30f3\u30c8<\/strong>\u306f `list[\u578b]` \u3068\u3044\u3046\u5f62\u3067\u66f8\u304f\u3002<\/p>\n<pre class=\"line-numbers\"><code class=\"language-python\">names: list[str] = [\"Alice\", \"Bob\", \"Charlie\"]  # \u6587\u5b57\u5217\u306e\u30ea\u30b9\u30c8\nscores: list[int] = [85, 92, 78, 90]  # \u6574\u6570\u306e\u30ea\u30b9\u30c8\n<\/code><\/pre>\n<p><strong>\u30bb\u30c3\u30c8\uff08set\uff09\u306e\u578b\u30d2\u30f3\u30c8<\/strong>\u306f `set[\u578b]` \u3067\u8868\u73fe\u3059\u308b\u3002<\/p>\n<pre class=\"line-numbers\"><code class=\"language-python\">unique_names: set[str] = {\"Alice\", \"Bob\", \"Charlie\"}  # \u6587\u5b57\u5217\u306e\u30bb\u30c3\u30c8\nprime_numbers: set[int] = {2, 3, 5, 7, 11, 13}  # \u6574\u6570\u306e\u30bb\u30c3\u30c8\n<\/code><\/pre>\n<p><strong>\u30bf\u30d7\u30eb\uff08tuple\uff09\u306e\u578b\u30d2\u30f3\u30c8<\/strong>\u306b\u306f2\u3064\u306e\u66f8\u304d\u65b9\u304c\u3042\u308b\u3002<\/p>\n<pre class=\"line-numbers\"><code class=\"language-python\"># \u56fa\u5b9a\u9577\u30bf\u30d7\u30eb\uff08\u8981\u7d20\u6570\u3068\u5404\u4f4d\u7f6e\u306e\u578b\u304c\u6c7a\u307e\u3063\u3066\u3044\u308b\uff09\nperson: tuple[str, int, bool] = (\"Alice\", 25, True)\ncoordinates: tuple[float, float] = (10.5, 20.3)\n\n# \u53ef\u5909\u9577\u30bf\u30d7\u30eb\uff08\u540c\u3058\u578b\u306e\u8981\u7d20\u304c\u4efb\u610f\u500b\uff09\nrgb_colors: tuple[int, ...] = (255, 128, 64, 32)\n<\/code><\/pre>\n<p><strong>\u8f9e\u66f8\uff08dict\uff09\u306e\u578b\u30d2\u30f3\u30c8<\/strong>\u306f `dict[\u30ad\u30fc\u578b, \u5024\u578b]` \u3067\u66f8\u304f\u3002<\/p>\n<pre class=\"line-numbers\"><code class=\"language-python\">ages: dict[str, int] = {\"Alice\": 25, \"Bob\": 30, \"Charlie\": 28}\n\n# \u30cd\u30b9\u30c8\u3057\u305f\u578b\u3082\u6307\u5b9a\u53ef\u80fd\nhobbies: dict[str, list[str]] = {\n    \"Alice\": [\"reading\", \"swimming\"],\n    \"Bob\": [\"gaming\", \"cooking\"]\n}\n<\/code><\/pre>\n<\/div>\n<div class=\"sub-item\">\n<h3>Optional\u578b\u3067None\u3092\u5b89\u5168\u306b\u6271\u3046<\/h3>\n<p>\u5b9f\u969b\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u3067\u306f\u3001\u5024\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\u3092\u8868\u73fe\u3059\u308b\u305f\u3081\u306bNone\u3092\u4f7f\u3046\u3053\u3068\u304c\u3088\u304f\u3042\u308b\u3002<strong>Optional\u578b<\/strong>\u3092\u4f7f\u3048\u3070\u3001None\u306b\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u5909\u6570\u3092\u578b\u5b89\u5168\u306b\u6271\u3048\u308b\u3002<\/p>\n<pre class=\"line-numbers\"><code class=\"language-python\">from typing import Optional\n\nuser_name: Optional[str] = None  # \u6587\u5b57\u5217\u307e\u305f\u306fNone(\u300cstr | None\u300d\u3067\u3082\u53ef)\nuser_id: Optional[int] = 42  # \u6574\u6570\u307e\u305f\u306fNone(\u300cint | None\u300d\u3067\u3082\u53ef)\n<\/code><\/pre>\n<p>\u95a2\u6570\u306e\u623b\u308a\u5024\u3067Optional\u578b\u3092\u4f7f\u3046\u4f8b\u3092\u898b\u3066\u307f\u3088\u3046\u3002<\/p>\n<pre class=\"line-numbers\"><code class=\"language-python\">def find_user_by_email(email: str) -&gt; Optional[str]: # \u300cstr | None\u300d\u3067\u3082\u53ef\n    users = {\"alice@example.com\": \"Alice\", \"bob@example.com\": \"Bob\"}\n    return users.get(email)  # \u898b\u3064\u304b\u3089\u306a\u3044\u5834\u5408\u306fNone\n\nresult = find_user_by_email(\"charlie@example.com\")\n\n# None\u30c1\u30a7\u30c3\u30af\u304c\u5fc5\u8981\uff08\u306a\u3044\u3068VSCode\u3067\u8b66\u544a\u304c\u8868\u793a\u3055\u308c\u308b\uff09\nif result is not None:\n    print(f\"Found user: {result}\")\nelse:\n    print(\"User not found\")\n<\/code><\/pre>\n<p>\u300cis not None\u300d\u306e\u30c1\u30a7\u30c3\u30af\u304c\u306a\u3044\u3068\u304d\u3001<strong>None\u3060\u3068\u5b9f\u884c\u304c\u3067\u304d\u306a\u3044\u51e6\u7406\u306e\u5834\u5408<\/strong>\u306b\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u8b66\u544a\u304c\u8868\u793a\u3055\u308c\u308b\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-4894\" src=\"https:\/\/www.nblog09.com\/w\/wp-content\/uploads\/2025\/08\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-08-25-16.03.20-1024x303.png\" alt=\"\" width=\"1024\" height=\"303\" srcset=\"https:\/\/www.nblog09.com\/w\/wp-content\/uploads\/2025\/08\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-08-25-16.03.20-1024x303.png 1024w, https:\/\/www.nblog09.com\/w\/wp-content\/uploads\/2025\/08\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-08-25-16.03.20-300x89.png 300w, https:\/\/www.nblog09.com\/w\/wp-content\/uploads\/2025\/08\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-08-25-16.03.20-768x228.png 768w, https:\/\/www.nblog09.com\/w\/wp-content\/uploads\/2025\/08\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-08-25-16.03.20-1536x455.png 1536w, https:\/\/www.nblog09.com\/w\/wp-content\/uploads\/2025\/08\/\u30b9\u30af\u30ea\u30fc\u30f3\u30b7\u30e7\u30c3\u30c8-2025-08-25-16.03.20-2048x607.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<div class=\"tips\">Python 3.10\u4ee5\u964d\u3067\u306f\u3001<strong>Optional[str]<\/strong> \u306e\u4ee3\u308f\u308a\u306b <strong>str | None<\/strong> \u3068\u3044\u3046\u66f8\u304d\u65b9\u3082\u3067\u304d\u308b\u3002\u3069\u3061\u3089\u3082\u540c\u3058\u610f\u5473\u3060\u304c\u3001\u65b0\u3057\u3044\u66f8\u304d\u65b9\u306e\u65b9\u304c\u7c21\u6f54\u3060\u3002<\/div>\n<\/div>\n<div class=\"sub-item\">\n<h3>\u5b9f\u8df5\u7684\u306a\u4f8b\uff1a\u30e6\u30fc\u30b6\u30fc\u691c\u7d22\u6a5f\u80fd<\/h3>\n<p>\u5b9f\u969b\u306e\u30b3\u30fc\u30c9\u3067\u578b\u30d2\u30f3\u30c8\u304c\u3069\u306e\u3088\u3046\u306b\u6d3b\u7528\u3055\u308c\u308b\u304b\u898b\u3066\u307f\u3088\u3046\u3002<\/p>\n<pre class=\"line-numbers\"><code class=\"language-python\">from typing import Optional\n\ndef find_user_by_id(users: list[dict[str, str]], user_id: str) -&gt; dict[str, str] | None:\n    for user in users:\n        if user.get('id') == user_id:\n            return user\n    return None\n\nusers = [\n    {'id': '001', 'name': '\u7530\u4e2d'},\n    {'id': '002', 'name': '\u4f50\u85e4'},\n]\n\nuser = find_user_by_id(users, '001')\nif user is not None:\n    print(user['name'])  # \u7530\u4e2d\n<\/code><\/pre>\n<p>\u3053\u306e\u4f8b\u3067\u306f\u3001<strong>list[dict[str, str]]<\/strong> \u3068\u3044\u3046\u8907\u96d1\u306a\u578b\u30d2\u30f3\u30c8\u3092\u4f7f\u3063\u3066\u3044\u308b\u3002\u3053\u308c\u306f\u300c\u6587\u5b57\u5217\u3092\u30ad\u30fc\u3068\u5024\u306b\u6301\u3064\u8f9e\u66f8\u306e\u30ea\u30b9\u30c8\u300d\u3068\u3044\u3046\u610f\u5473\u3060\u3002<\/p>\n<\/div>\n<div class=\"sub-item\">\n<h3>\u30af\u30e9\u30b9\u3092\u4f7f\u3063\u305f\u578b\u30d2\u30f3\u30c8\u306e\u4f8b<\/h3>\n<p>\u3088\u308a\u8907\u96d1\u306a\u4f8b\u3068\u3057\u3066\u3001\u30af\u30e9\u30b9\u3092\u4f7f\u3063\u305f\u5546\u54c1\u5206\u985e\u30b7\u30b9\u30c6\u30e0\u3092\u898b\u3066\u307f\u3088\u3046\u3002<\/p>\n<pre class=\"line-numbers\"><code class=\"language-python\">class Product:\n    def __init__(self, name: str, category: str):\n        self.name = name\n        self.category = category\n\nitems = [\n    Product(name='\u30ce\u30fc\u30c8PC', category='\u96fb\u5b50\u6a5f\u5668'),\n    Product(name='\u30de\u30a6\u30b9', category='\u96fb\u5b50\u6a5f\u5668'),\n    Product(name='\u30b3\u30fc\u30d2\u30fc', category='\u98f2\u6599'),\n]\n\ndef group_items_by_category(items: list[Product]) -&gt; dict[str, list[str]]:\n    result: dict[str, list[str]] = {}\n    for item in items:\n        category = item.category\n        name = item.name\n        if category not in result:\n            result[category] = []\n        result[category].append(name)\n    return result\n\nitems_group = group_items_by_category(items)\nprint(items_group)\n# {'\u96fb\u5b50\u6a5f\u5668': ['\u30ce\u30fc\u30c8PC', '\u30de\u30a6\u30b9'], '\u98f2\u6599': ['\u30b3\u30fc\u30d2\u30fc']}\n<\/code><\/pre>\n<p>\u3053\u306e\u95a2\u6570\u306f <strong>list[Product]<\/strong> \u3092\u53d7\u3051\u53d6\u308a\u3001<strong>dict[str, list[str]]<\/strong>\u3092\u8fd4\u3057\u3066\u3044\u308b\u3002\u578b\u30d2\u30f3\u30c8\u304c\u3042\u308b\u3053\u3068\u3067\u3001\u95a2\u6570\u306e\u5165\u529b\u3068\u51fa\u529b\u304c\u660e\u78ba\u306b\u306a\u308a\u3001\u4f7f\u3046\u5074\u3082\u5b89\u5fc3\u3057\u3066\u30b3\u30fc\u30c9\u3092\u66f8\u3051\u308b\u3002<\/p>\n<\/div>\n<div class=\"summary\">\u578b\u30d2\u30f3\u30c8\u3092\u4f7f\u3046\u3053\u3068\u3067\u3001\u30b3\u30fc\u30c9\u306e\u53ef\u8aad\u6027\u3068\u4fdd\u5b88\u6027\u304c\u5927\u5e45\u306b\u5411\u4e0a\u3059\u308b\u3002\u7279\u306b\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u578b\u3067\u306f\u3001\u8981\u7d20\u306e\u578b\u307e\u3067\u6307\u5b9a\u3059\u308b\u3053\u3068\u3067\u3001\u30c7\u30fc\u30bf\u69cb\u9020\u304c\u660e\u78ba\u306b\u306a\u308b\u3002Optional\u578b\u3092\u4f7f\u3048\u3070\u3001None\u306e\u53ef\u80fd\u6027\u304c\u3042\u308b\u5024\u3092\u5b89\u5168\u306b\u6271\u3048\u308b\u3088\u3046\u306b\u306a\u308b\u3002<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Python\u306e\u578b\u30d2\u30f3\u30c8\uff1a\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u578b\u3068Optional\u578b\u306e\u4f7f\u3044\u65b9 \u524d\u56de\u306f\u3001\u578b\u30d2\u30f3\u30c8\u306e\u57fa\u672c\u7684\u306a\u5229\u7528\u65b9\u6cd5\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u305f\u3002 \u4eca\u56de\u306f\u3001\u30ea\u30b9\u30c8\u3084\u8f9e\u66f8\u306a\u3069\u306e\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u578b\u3068\u3001None\u3092\u8a31\u53ef\u3059\u308bOptional\u578b\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u89e3\u8aac [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_uag_custom_page_level_css":"","_uf_show_specific_survey":0,"_uf_disable_surveys":false,"_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[9,219],"tags":[14],"class_list":{"0":"post-4890","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-python","7":"category-it-programming","8":"tag-python","9":"entry","10":"has-post-thumbnail"},"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"home-middle":false,"home-top":false,"sidebar-thumbnail":false},"uagb_author_info":{"display_name":"9nmatsumoto","author_link":"https:\/\/www.nblog09.com\/w\/author\/9nmatsumoto\/"},"uagb_comment_info":0,"uagb_excerpt":"Python\u306e\u578b\u30d2\u30f3\u30c8\uff1a\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u578b\u3068Optional\u578b\u306e\u4f7f\u3044\u65b9 \u524d\u56de\u306f\u3001\u578b\u30d2\u30f3\u30c8\u306e\u57fa\u672c\u7684\u306a\u5229\u7528\u65b9\u6cd5\u306b\u3064\u3044\u3066&hellip;","_links":{"self":[{"href":"https:\/\/www.nblog09.com\/w\/wp-json\/wp\/v2\/posts\/4890","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.nblog09.com\/w\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.nblog09.com\/w\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.nblog09.com\/w\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.nblog09.com\/w\/wp-json\/wp\/v2\/comments?post=4890"}],"version-history":[{"count":8,"href":"https:\/\/www.nblog09.com\/w\/wp-json\/wp\/v2\/posts\/4890\/revisions"}],"predecessor-version":[{"id":4902,"href":"https:\/\/www.nblog09.com\/w\/wp-json\/wp\/v2\/posts\/4890\/revisions\/4902"}],"wp:attachment":[{"href":"https:\/\/www.nblog09.com\/w\/wp-json\/wp\/v2\/media?parent=4890"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.nblog09.com\/w\/wp-json\/wp\/v2\/categories?post=4890"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.nblog09.com\/w\/wp-json\/wp\/v2\/tags?post=4890"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}